From dda5795d38d3c843a7e1fba1e19bbd0c0bb545db Mon Sep 17 00:00:00 2001 From: nihalramesh12629 <> Date: Thu, 17 Oct 2024 22:59:07 +0800 Subject: [PATCH 1/2] Add GUI Color Coding --- .gitattributes | 1 - .github/check-eof-newline.sh | 18 - .github/check-line-endings.sh | 19 - .github/check-trailing-whitespace.sh | 26 - .github/run-checks.sh | 11 - .github/workflows/gradle.yml | 46 -- .gitignore | 23 - LICENSE | 21 - README.md | 12 - build.gradle | 72 --- config/checkstyle/checkstyle.xml | 434 ------------- config/checkstyle/suppressions.xml | 10 - copyright.txt | 9 - docs/AboutUs.md | 56 -- docs/Configuration.md | 6 - docs/DevOps.md | 79 --- docs/DeveloperGuide.md | 568 ------------------ docs/Documentation.md | 29 - docs/Gemfile | 10 - docs/Gemfile.lock | 269 --------- docs/Logging.md | 11 - docs/SettingUp.md | 55 -- docs/Testing.md | 36 -- docs/UserGuide.md | 199 ------ docs/_config.yml | 15 - docs/_data/projects.yml | 23 - docs/_includes/custom-head.html | 6 - docs/_includes/head.html | 12 - docs/_includes/header.html | 36 -- docs/_layouts/alt-page.html | 14 - docs/_layouts/default.html | 18 - docs/_layouts/page.html | 14 - docs/_sass/minima/_base.scss | 294 --------- docs/_sass/minima/_layout.scss | 263 -------- docs/_sass/minima/custom-mixins.scss | 21 - docs/_sass/minima/custom-styles.scss | 34 -- docs/_sass/minima/custom-variables.scss | 76 --- docs/_sass/minima/initialize.scss | 51 -- docs/_sass/minima/skins/classic.scss | 84 --- docs/_sass/minima/skins/solarized-dark.scss | 4 - docs/_sass/minima/skins/solarized.scss | 133 ---- docs/assets/css/style.scss | 12 - docs/diagrams/ArchitectureDiagram.puml | 33 - .../diagrams/ArchitectureSequenceDiagram.puml | 39 -- docs/diagrams/BetterModelClassDiagram.puml | 21 - docs/diagrams/CommitActivityDiagram.puml | 18 - docs/diagrams/ComponentManagers.puml | 31 - docs/diagrams/DeleteSequenceDiagram.puml | 70 --- docs/diagrams/LogicClassDiagram.puml | 47 -- docs/diagrams/ModelClassDiagram.puml | 54 -- docs/diagrams/ParserClasses.puml | 38 -- docs/diagrams/StorageClassDiagram.puml | 43 -- docs/diagrams/UiClassDiagram.puml | 60 -- docs/diagrams/UndoRedoState0.puml | 21 - docs/diagrams/UndoRedoState1.puml | 23 - docs/diagrams/UndoRedoState2.puml | 21 - docs/diagrams/UndoRedoState3.puml | 21 - docs/diagrams/UndoRedoState4.puml | 21 - docs/diagrams/UndoRedoState5.puml | 22 - docs/diagrams/UndoSequenceDiagram-Logic.puml | 46 -- docs/diagrams/UndoSequenceDiagram-Model.puml | 23 - docs/diagrams/add-remark/ParserClass.puml | 14 - docs/diagrams/add-remark/RemarkClass.puml | 19 - docs/diagrams/style.puml | 79 --- .../tracing/LogicSequenceDiagram.puml | 22 - docs/images/ArchitectureDiagram.png | Bin 19887 -> 0 bytes docs/images/ArchitectureSequenceDiagram.png | Bin 15175 -> 0 bytes docs/images/BetterModelClassDiagram.png | Bin 14116 -> 0 bytes docs/images/CommitActivityDiagram.png | Bin 16227 -> 0 bytes docs/images/ComponentManagers.png | Bin 17411 -> 0 bytes docs/images/DeleteSequenceDiagram.png | Bin 28142 -> 0 bytes docs/images/LogicClassDiagram.png | Bin 36769 -> 0 bytes docs/images/LogicStorageDIP.png | Bin 5808 -> 0 bytes docs/images/ModelClassDiagram.png | Bin 27204 -> 0 bytes docs/images/ParserClasses.png | Bin 28856 -> 0 bytes docs/images/SeEduLogo.png | Bin 20233 -> 0 bytes docs/images/StorageClassDiagram.png | Bin 29426 -> 0 bytes docs/images/Ui.png | Bin 14607 -> 0 bytes docs/images/UiClassDiagram.png | Bin 48363 -> 0 bytes docs/images/UndoRedoState0.png | Bin 6619 -> 0 bytes docs/images/UndoRedoState1.png | Bin 7454 -> 0 bytes docs/images/UndoRedoState2.png | Bin 7855 -> 0 bytes docs/images/UndoRedoState3.png | Bin 7588 -> 0 bytes docs/images/UndoRedoState4.png | Bin 7605 -> 0 bytes docs/images/UndoRedoState5.png | Bin 9427 -> 0 bytes docs/images/UndoSequenceDiagram-Logic.png | Bin 18099 -> 0 bytes docs/images/UndoSequenceDiagram-Model.png | Bin 10777 -> 0 bytes docs/images/agenthagu.png | Bin 31227 -> 0 bytes docs/images/amoschee.png | Bin 97614 -> 0 bytes docs/images/arnaxx54.png | Bin 126309 -> 0 bytes docs/images/findAlexDavidResult.png | Bin 19640 -> 0 bytes docs/images/github-icon.png | Bin 1714 -> 0 bytes docs/images/helpMessage.png | Bin 8435 -> 0 bytes docs/images/johndoe.png | Bin 1961 -> 0 bytes docs/images/maahir-garg.png | Bin 201344 -> 0 bytes docs/images/nihalramesh12629.png | Bin 121376 -> 0 bytes docs/images/request_access.png | Bin 11701 -> 0 bytes docs/index.md | 19 - docs/team/agenthagu.md | 10 - docs/team/amoschee.md | 10 - docs/team/arnaxx54.md | 10 - docs/team/maahir-garg.md | 10 - docs/team/nihalramesh12629.md | 6 - gradle.properties | 2 - gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 0 bytes gradle/wrapper/gradle-wrapper.properties | 5 - gradlew | 234 -------- gradlew.bat | 89 --- .../java/seedu/address/AppParameters.java | 73 --- src/main/java/seedu/address/Main.java | 41 -- src/main/java/seedu/address/MainApp.java | 186 ------ .../seedu/address/commons/core/Config.java | 66 -- .../address/commons/core/GuiSettings.java | 82 --- .../address/commons/core/LogsCenter.java | 106 ---- .../seedu/address/commons/core/Version.java | 121 ---- .../address/commons/core/index/Index.java | 69 --- .../exceptions/DataLoadingException.java | 11 - .../exceptions/IllegalValueException.java | 21 - .../seedu/address/commons/util/AppUtil.java | 42 -- .../address/commons/util/CollectionUtil.java | 35 -- .../address/commons/util/ConfigUtil.java | 23 - .../seedu/address/commons/util/FileUtil.java | 83 --- .../seedu/address/commons/util/JsonUtil.java | 144 ----- .../address/commons/util/StringUtil.java | 68 --- .../address/commons/util/ToStringBuilder.java | 53 -- src/main/java/seedu/address/logic/Logic.java | 50 -- .../seedu/address/logic/LogicManager.java | 88 --- .../java/seedu/address/logic/Messages.java | 51 -- .../address/logic/commands/AddCommand.java | 85 --- .../logic/commands/AddStudentCommand.java | 93 --- .../logic/commands/AddTeacherCommand.java | 92 --- .../address/logic/commands/ClearCommand.java | 44 -- .../seedu/address/logic/commands/Command.java | 20 - .../address/logic/commands/CommandResult.java | 82 --- .../address/logic/commands/DeleteCommand.java | 69 --- .../address/logic/commands/EditCommand.java | 242 -------- .../address/logic/commands/ExitCommand.java | 19 - .../address/logic/commands/FindCommand.java | 59 -- .../address/logic/commands/HelpCommand.java | 21 - .../address/logic/commands/ListCommand.java | 24 - .../address/logic/commands/SortCommand.java | 52 -- .../commands/exceptions/CommandException.java | 17 - .../logic/parser/AddCommandParser.java | 61 -- .../logic/parser/AddStudentCommandParser.java | 105 ---- .../logic/parser/AddTeacherCommandParser.java | 71 --- .../logic/parser/AddressBookParser.java | 98 --- .../logic/parser/ArgumentMultimap.java | 78 --- .../logic/parser/ArgumentTokenizer.java | 148 ----- .../logic/parser/ClearCommandParser.java | 36 -- .../seedu/address/logic/parser/CliSyntax.java | 18 - .../logic/parser/DeleteCommandParser.java | 29 - .../logic/parser/EditCommandParser.java | 85 --- .../logic/parser/FindCommandParser.java | 40 -- .../seedu/address/logic/parser/Parser.java | 16 - .../address/logic/parser/ParserUtil.java | 180 ------ .../seedu/address/logic/parser/Prefix.java | 42 -- .../logic/parser/SortCommandParser.java | 26 - .../parser/exceptions/ParseException.java | 17 - .../java/seedu/address/model/AddressBook.java | 143 ----- src/main/java/seedu/address/model/Model.java | 90 --- .../seedu/address/model/ModelManager.java | 163 ----- .../address/model/ReadOnlyAddressBook.java | 17 - .../address/model/ReadOnlyUserPrefs.java | 16 - .../java/seedu/address/model/UserPrefs.java | 88 --- .../seedu/address/model/person/Address.java | 65 -- .../AddressContainsKeywordsPredicate.java | 45 -- .../seedu/address/model/person/Email.java | 79 --- .../EmailContainsKeywordsPredicate.java | 43 -- .../seedu/address/model/person/Gender.java | 61 -- .../java/seedu/address/model/person/Name.java | 67 --- .../person/NameContainsKeywordsPredicate.java | 44 -- .../seedu/address/model/person/Person.java | 121 ---- .../PersonContainsKeywordsPredicate.java | 118 ---- .../seedu/address/model/person/Phone.java | 61 -- .../PhoneContainsKeywordsPredicate.java | 44 -- .../seedu/address/model/person/Student.java | 93 --- .../seedu/address/model/person/Subject.java | 65 -- .../person/TagContainsKeywordsPredicate.java | 45 -- .../seedu/address/model/person/Teacher.java | 115 ---- .../model/person/UniquePersonList.java | 150 ----- .../exceptions/DuplicatePersonException.java | 11 - .../exceptions/PersonNotFoundException.java | 6 - .../java/seedu/address/model/tag/Tag.java | 62 -- .../address/model/util/SampleDataUtil.java | 69 --- .../address/storage/AddressBookStorage.java | 45 -- .../address/storage/JsonAdaptedPerson.java | 109 ---- .../seedu/address/storage/JsonAdaptedTag.java | 48 -- .../storage/JsonAddressBookStorage.java | 80 --- .../storage/JsonSerializableAddressBook.java | 60 -- .../address/storage/JsonUserPrefsStorage.java | 47 -- .../java/seedu/address/storage/Storage.java | 32 - .../seedu/address/storage/StorageManager.java | 78 --- .../address/storage/UserPrefsStorage.java | 36 -- .../java/seedu/address/ui/CommandBox.java | 85 --- .../java/seedu/address/ui/HelpWindow.java | 102 ---- .../java/seedu/address/ui/MainWindow.java | 196 ------ .../java/seedu/address/ui/PersonCard.java | 59 -- .../seedu/address/ui/PersonListPanel.java | 49 -- .../java/seedu/address/ui/ResultDisplay.java | 28 - .../seedu/address/ui/StatusBarFooter.java | 28 - src/main/java/seedu/address/ui/Ui.java | 13 - src/main/java/seedu/address/ui/UiManager.java | 88 --- src/main/java/seedu/address/ui/UiPart.java | 88 --- src/main/resources/images/address_book_32.png | Bin 4214 -> 0 bytes src/main/resources/images/calendar.png | Bin 1215 -> 0 bytes src/main/resources/images/clock.png | Bin 13751 -> 0 bytes src/main/resources/images/fail.png | Bin 20783 -> 0 bytes src/main/resources/images/help_icon.png | Bin 31256 -> 0 bytes src/main/resources/images/info_icon.png | Bin 5424 -> 0 bytes src/main/resources/view/CommandBox.fxml | 9 - src/main/resources/view/DarkTheme.css | 352 ----------- src/main/resources/view/Extensions.css | 20 - src/main/resources/view/HelpWindow.css | 19 - src/main/resources/view/HelpWindow.fxml | 44 -- src/main/resources/view/MainWindow.fxml | 60 -- src/main/resources/view/PersonListCard.fxml | 36 -- src/main/resources/view/PersonListPanel.fxml | 8 - src/main/resources/view/ResultDisplay.fxml | 9 - src/main/resources/view/StatusBarFooter.fxml | 12 - src/test/data/ConfigUtilTest/EmptyConfig.json | 3 - .../ConfigUtilTest/ExtraValuesConfig.json | 5 - .../ConfigUtilTest/NotJsonFormatConfig.json | 1 - .../data/ConfigUtilTest/TypicalConfig.json | 4 - .../invalidAndValidPersonAddressBook.json | 13 - .../invalidPersonAddressBook.json | 8 - .../notJsonFormatAddressBook.json | 1 - .../duplicatePersonAddressBook.json | 14 - .../invalidPersonAddressBook.json | 8 - .../typicalPersonsAddressBook.json | 46 -- .../EmptyUserPrefs.json | 3 - .../ExtraValuesUserPref.json | 13 - .../NotJsonFormatUserPrefs.json | 1 - .../TypicalUserPref.json | 11 - .../java/seedu/address/AppParametersTest.java | 89 --- .../address/commons/core/ConfigTest.java | 27 - .../address/commons/core/GuiSettingsTest.java | 16 - .../address/commons/core/VersionTest.java | 135 ----- .../address/commons/core/index/IndexTest.java | 67 --- .../address/commons/util/AppUtilTest.java | 36 -- .../commons/util/CollectionUtilTest.java | 108 ---- .../address/commons/util/ConfigUtilTest.java | 116 ---- .../address/commons/util/FileUtilTest.java | 23 - .../address/commons/util/JsonUtilTest.java | 45 -- .../address/commons/util/StringUtilTest.java | 143 ----- .../seedu/address/logic/LogicManagerTest.java | 175 ------ .../commands/AddCommandIntegrationTest.java | 48 -- .../logic/commands/AddCommandTest.java | 210 ------- .../logic/commands/AddStudentCommandTest.java | 213 ------- .../logic/commands/ClearCommandTest.java | 37 -- .../logic/commands/CommandResultTest.java | 63 -- .../logic/commands/CommandTestUtil.java | 183 ------ .../logic/commands/DeleteCommandTest.java | 120 ---- .../logic/commands/EditCommandTest.java | 184 ------ .../commands/EditPersonDescriptorTest.java | 71 --- .../logic/commands/ExitCommandTest.java | 20 - .../logic/commands/FindCommandTest.java | 199 ------ .../logic/commands/HelpCommandTest.java | 20 - .../logic/commands/ListCommandTest.java | 39 -- .../logic/commands/SortCommandTest.java | 53 -- .../logic/parser/AddCommandParserTest.java | 196 ------ .../parser/AddStudentCommandParserTest.java | 163 ----- .../parser/AddTeacherCommandParserTest.java | 159 ----- .../logic/parser/AddressBookParserTest.java | 119 ---- .../logic/parser/ArgumentTokenizerTest.java | 150 ----- .../logic/parser/CommandParserTestUtil.java | 39 -- .../logic/parser/DeleteCommandParserTest.java | 32 - .../logic/parser/EditCommandParserTest.java | 208 ------- .../logic/parser/FindCommandParserTest.java | 85 --- .../address/logic/parser/ParserUtilTest.java | 196 ------ .../logic/parser/SortCommandParserTest.java | 34 -- .../seedu/address/model/AddressBookTest.java | 108 ---- .../seedu/address/model/ModelManagerTest.java | 132 ---- .../seedu/address/model/UserPrefsTest.java | 21 - .../AddressContainsKeywordsPredicateTest.java | 81 --- .../address/model/person/AddressTest.java | 56 -- .../EmailContainsKeywordsPredicateTest.java | 89 --- .../seedu/address/model/person/EmailTest.java | 88 --- .../NameContainsKeywordsPredicateTest.java | 85 --- .../seedu/address/model/person/NameTest.java | 60 -- .../PersonContainsKeywordsPredicateTest.java | 160 ----- .../address/model/person/PersonTest.java | 99 --- .../PhoneContainsKeywordsPredicateTest.java | 89 --- .../seedu/address/model/person/PhoneTest.java | 60 -- .../address/model/person/StudentTest.java | 62 -- .../address/model/person/SubjectTest.java | 72 --- .../TagContainsKeywordsPredicateTest.java | 85 --- .../address/model/person/TeacherTest.java | 141 ----- .../model/person/UniquePersonListTest.java | 175 ------ .../java/seedu/address/model/tag/TagTest.java | 26 - .../storage/JsonAdaptedPersonTest.java | 110 ---- .../storage/JsonAddressBookStorageTest.java | 110 ---- .../JsonSerializableAddressBookTest.java | 47 -- .../storage/JsonUserPrefsStorageTest.java | 123 ---- .../address/storage/StorageManagerTest.java | 68 --- .../address/testutil/AddressBookBuilder.java | 34 -- .../java/seedu/address/testutil/Assert.java | 34 -- .../testutil/EditPersonDescriptorBuilder.java | 87 --- .../seedu/address/testutil/PersonBuilder.java | 96 --- .../seedu/address/testutil/PersonUtil.java | 62 -- .../testutil/SerializableTestClass.java | 72 --- .../address/testutil/StudentBuilder.java | 120 ---- .../address/testutil/TeacherBuilder.java | 133 ---- .../java/seedu/address/testutil/TestUtil.java | 55 -- .../address/testutil/TypicalIndexes.java | 12 - .../address/testutil/TypicalPersons.java | 94 --- .../address/testutil/TypicalTeachers.java | 86 --- .../java/seedu/address/ui/TestFxmlObject.java | 45 -- .../java/seedu/address/ui/UiPartTest.java | 114 ---- .../view/UiPartTest/invalidFile.fxml | 1 - .../resources/view/UiPartTest/validFile.fxml | 4 - .../view/UiPartTest/validFileWithFxRoot.fxml | 6 - 311 files changed, 18568 deletions(-) delete mode 100644 .gitattributes delete mode 100755 .github/check-eof-newline.sh delete mode 100755 .github/check-line-endings.sh delete mode 100755 .github/check-trailing-whitespace.sh delete mode 100755 .github/run-checks.sh delete mode 100644 .github/workflows/gradle.yml delete mode 100644 .gitignore delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 build.gradle delete mode 100644 config/checkstyle/checkstyle.xml delete mode 100644 config/checkstyle/suppressions.xml delete mode 100644 copyright.txt delete mode 100644 docs/AboutUs.md delete mode 100644 docs/Configuration.md delete mode 100644 docs/DevOps.md delete mode 100644 docs/DeveloperGuide.md delete mode 100644 docs/Documentation.md delete mode 100644 docs/Gemfile delete mode 100644 docs/Gemfile.lock delete mode 100644 docs/Logging.md delete mode 100644 docs/SettingUp.md delete mode 100644 docs/Testing.md delete mode 100644 docs/UserGuide.md delete mode 100644 docs/_config.yml delete mode 100644 docs/_data/projects.yml delete mode 100644 docs/_includes/custom-head.html delete mode 100644 docs/_includes/head.html delete mode 100644 docs/_includes/header.html delete mode 100644 docs/_layouts/alt-page.html delete mode 100644 docs/_layouts/default.html delete mode 100644 docs/_layouts/page.html delete mode 100644 docs/_sass/minima/_base.scss delete mode 100644 docs/_sass/minima/_layout.scss delete mode 100644 docs/_sass/minima/custom-mixins.scss delete mode 100644 docs/_sass/minima/custom-styles.scss delete mode 100644 docs/_sass/minima/custom-variables.scss delete mode 100644 docs/_sass/minima/initialize.scss delete mode 100644 docs/_sass/minima/skins/classic.scss delete mode 100644 docs/_sass/minima/skins/solarized-dark.scss delete mode 100644 docs/_sass/minima/skins/solarized.scss delete mode 100644 docs/assets/css/style.scss delete mode 100644 docs/diagrams/ArchitectureDiagram.puml delete mode 100644 docs/diagrams/ArchitectureSequenceDiagram.puml delete mode 100644 docs/diagrams/BetterModelClassDiagram.puml delete mode 100644 docs/diagrams/CommitActivityDiagram.puml delete mode 100644 docs/diagrams/ComponentManagers.puml delete mode 100644 docs/diagrams/DeleteSequenceDiagram.puml delete mode 100644 docs/diagrams/LogicClassDiagram.puml delete mode 100644 docs/diagrams/ModelClassDiagram.puml delete mode 100644 docs/diagrams/ParserClasses.puml delete mode 100644 docs/diagrams/StorageClassDiagram.puml delete mode 100644 docs/diagrams/UiClassDiagram.puml delete mode 100644 docs/diagrams/UndoRedoState0.puml delete mode 100644 docs/diagrams/UndoRedoState1.puml delete mode 100644 docs/diagrams/UndoRedoState2.puml delete mode 100644 docs/diagrams/UndoRedoState3.puml delete mode 100644 docs/diagrams/UndoRedoState4.puml delete mode 100644 docs/diagrams/UndoRedoState5.puml delete mode 100644 docs/diagrams/UndoSequenceDiagram-Logic.puml delete mode 100644 docs/diagrams/UndoSequenceDiagram-Model.puml delete mode 100644 docs/diagrams/add-remark/ParserClass.puml delete mode 100644 docs/diagrams/add-remark/RemarkClass.puml delete mode 100644 docs/diagrams/style.puml delete mode 100644 docs/diagrams/tracing/LogicSequenceDiagram.puml delete mode 100644 docs/images/ArchitectureDiagram.png delete mode 100644 docs/images/ArchitectureSequenceDiagram.png delete mode 100644 docs/images/BetterModelClassDiagram.png delete mode 100644 docs/images/CommitActivityDiagram.png delete mode 100644 docs/images/ComponentManagers.png delete mode 100644 docs/images/DeleteSequenceDiagram.png delete mode 100644 docs/images/LogicClassDiagram.png delete mode 100644 docs/images/LogicStorageDIP.png delete mode 100644 docs/images/ModelClassDiagram.png delete mode 100644 docs/images/ParserClasses.png delete mode 100644 docs/images/SeEduLogo.png delete mode 100644 docs/images/StorageClassDiagram.png delete mode 100644 docs/images/Ui.png delete mode 100644 docs/images/UiClassDiagram.png delete mode 100644 docs/images/UndoRedoState0.png delete mode 100644 docs/images/UndoRedoState1.png delete mode 100644 docs/images/UndoRedoState2.png delete mode 100644 docs/images/UndoRedoState3.png delete mode 100644 docs/images/UndoRedoState4.png delete mode 100644 docs/images/UndoRedoState5.png delete mode 100644 docs/images/UndoSequenceDiagram-Logic.png delete mode 100644 docs/images/UndoSequenceDiagram-Model.png delete mode 100644 docs/images/agenthagu.png delete mode 100644 docs/images/amoschee.png delete mode 100644 docs/images/arnaxx54.png delete mode 100644 docs/images/findAlexDavidResult.png delete mode 100755 docs/images/github-icon.png delete mode 100644 docs/images/helpMessage.png delete mode 100644 docs/images/johndoe.png delete mode 100644 docs/images/maahir-garg.png delete mode 100644 docs/images/nihalramesh12629.png delete mode 100644 docs/images/request_access.png delete mode 100644 docs/index.md delete mode 100644 docs/team/agenthagu.md delete mode 100644 docs/team/amoschee.md delete mode 100644 docs/team/arnaxx54.md delete mode 100644 docs/team/maahir-garg.md delete mode 100644 docs/team/nihalramesh12629.md delete mode 100644 gradle.properties delete mode 100644 gradle/wrapper/gradle-wrapper.jar delete mode 100644 gradle/wrapper/gradle-wrapper.properties delete mode 100755 gradlew delete mode 100644 gradlew.bat delete mode 100644 src/main/java/seedu/address/AppParameters.java delete mode 100644 src/main/java/seedu/address/Main.java delete mode 100644 src/main/java/seedu/address/MainApp.java delete mode 100644 src/main/java/seedu/address/commons/core/Config.java delete mode 100644 src/main/java/seedu/address/commons/core/GuiSettings.java delete mode 100644 src/main/java/seedu/address/commons/core/LogsCenter.java delete mode 100644 src/main/java/seedu/address/commons/core/Version.java delete mode 100644 src/main/java/seedu/address/commons/core/index/Index.java delete mode 100644 src/main/java/seedu/address/commons/exceptions/DataLoadingException.java delete mode 100644 src/main/java/seedu/address/commons/exceptions/IllegalValueException.java delete mode 100644 src/main/java/seedu/address/commons/util/AppUtil.java delete mode 100644 src/main/java/seedu/address/commons/util/CollectionUtil.java delete mode 100644 src/main/java/seedu/address/commons/util/ConfigUtil.java delete mode 100644 src/main/java/seedu/address/commons/util/FileUtil.java delete mode 100644 src/main/java/seedu/address/commons/util/JsonUtil.java delete mode 100644 src/main/java/seedu/address/commons/util/StringUtil.java delete mode 100644 src/main/java/seedu/address/commons/util/ToStringBuilder.java delete mode 100644 src/main/java/seedu/address/logic/Logic.java delete mode 100644 src/main/java/seedu/address/logic/LogicManager.java delete mode 100644 src/main/java/seedu/address/logic/Messages.java delete mode 100644 src/main/java/seedu/address/logic/commands/AddCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/AddStudentCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/AddTeacherCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/ClearCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/Command.java delete mode 100644 src/main/java/seedu/address/logic/commands/CommandResult.java delete mode 100644 src/main/java/seedu/address/logic/commands/DeleteCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/EditCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/ExitCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/FindCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/HelpCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/ListCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/SortCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/exceptions/CommandException.java delete mode 100644 src/main/java/seedu/address/logic/parser/AddCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/AddTeacherCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/AddressBookParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/ArgumentMultimap.java delete mode 100644 src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java delete mode 100644 src/main/java/seedu/address/logic/parser/ClearCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/CliSyntax.java delete mode 100644 src/main/java/seedu/address/logic/parser/DeleteCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/EditCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/FindCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/Parser.java delete mode 100644 src/main/java/seedu/address/logic/parser/ParserUtil.java delete mode 100644 src/main/java/seedu/address/logic/parser/Prefix.java delete mode 100644 src/main/java/seedu/address/logic/parser/SortCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/exceptions/ParseException.java delete mode 100644 src/main/java/seedu/address/model/AddressBook.java delete mode 100644 src/main/java/seedu/address/model/Model.java delete mode 100644 src/main/java/seedu/address/model/ModelManager.java delete mode 100644 src/main/java/seedu/address/model/ReadOnlyAddressBook.java delete mode 100644 src/main/java/seedu/address/model/ReadOnlyUserPrefs.java delete mode 100644 src/main/java/seedu/address/model/UserPrefs.java delete mode 100644 src/main/java/seedu/address/model/person/Address.java delete mode 100644 src/main/java/seedu/address/model/person/AddressContainsKeywordsPredicate.java delete mode 100644 src/main/java/seedu/address/model/person/Email.java delete mode 100644 src/main/java/seedu/address/model/person/EmailContainsKeywordsPredicate.java delete mode 100644 src/main/java/seedu/address/model/person/Gender.java delete mode 100644 src/main/java/seedu/address/model/person/Name.java delete mode 100644 src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java delete mode 100644 src/main/java/seedu/address/model/person/Person.java delete mode 100644 src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java delete mode 100644 src/main/java/seedu/address/model/person/Phone.java delete mode 100644 src/main/java/seedu/address/model/person/PhoneContainsKeywordsPredicate.java delete mode 100644 src/main/java/seedu/address/model/person/Student.java delete mode 100644 src/main/java/seedu/address/model/person/Subject.java delete mode 100644 src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java delete mode 100644 src/main/java/seedu/address/model/person/Teacher.java delete mode 100644 src/main/java/seedu/address/model/person/UniquePersonList.java delete mode 100644 src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java delete mode 100644 src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java delete mode 100644 src/main/java/seedu/address/model/tag/Tag.java delete mode 100644 src/main/java/seedu/address/model/util/SampleDataUtil.java delete mode 100644 src/main/java/seedu/address/storage/AddressBookStorage.java delete mode 100644 src/main/java/seedu/address/storage/JsonAdaptedPerson.java delete mode 100644 src/main/java/seedu/address/storage/JsonAdaptedTag.java delete mode 100644 src/main/java/seedu/address/storage/JsonAddressBookStorage.java delete mode 100644 src/main/java/seedu/address/storage/JsonSerializableAddressBook.java delete mode 100644 src/main/java/seedu/address/storage/JsonUserPrefsStorage.java delete mode 100644 src/main/java/seedu/address/storage/Storage.java delete mode 100644 src/main/java/seedu/address/storage/StorageManager.java delete mode 100644 src/main/java/seedu/address/storage/UserPrefsStorage.java delete mode 100644 src/main/java/seedu/address/ui/CommandBox.java delete mode 100644 src/main/java/seedu/address/ui/HelpWindow.java delete mode 100644 src/main/java/seedu/address/ui/MainWindow.java delete mode 100644 src/main/java/seedu/address/ui/PersonCard.java delete mode 100644 src/main/java/seedu/address/ui/PersonListPanel.java delete mode 100644 src/main/java/seedu/address/ui/ResultDisplay.java delete mode 100644 src/main/java/seedu/address/ui/StatusBarFooter.java delete mode 100644 src/main/java/seedu/address/ui/Ui.java delete mode 100644 src/main/java/seedu/address/ui/UiManager.java delete mode 100644 src/main/java/seedu/address/ui/UiPart.java delete mode 100644 src/main/resources/images/address_book_32.png delete mode 100644 src/main/resources/images/calendar.png delete mode 100644 src/main/resources/images/clock.png delete mode 100644 src/main/resources/images/fail.png delete mode 100644 src/main/resources/images/help_icon.png delete mode 100644 src/main/resources/images/info_icon.png delete mode 100644 src/main/resources/view/CommandBox.fxml delete mode 100644 src/main/resources/view/DarkTheme.css delete mode 100644 src/main/resources/view/Extensions.css delete mode 100644 src/main/resources/view/HelpWindow.css delete mode 100644 src/main/resources/view/HelpWindow.fxml delete mode 100644 src/main/resources/view/MainWindow.fxml delete mode 100644 src/main/resources/view/PersonListCard.fxml delete mode 100644 src/main/resources/view/PersonListPanel.fxml delete mode 100644 src/main/resources/view/ResultDisplay.fxml delete mode 100644 src/main/resources/view/StatusBarFooter.fxml delete mode 100644 src/test/data/ConfigUtilTest/EmptyConfig.json delete mode 100644 src/test/data/ConfigUtilTest/ExtraValuesConfig.json delete mode 100644 src/test/data/ConfigUtilTest/NotJsonFormatConfig.json delete mode 100644 src/test/data/ConfigUtilTest/TypicalConfig.json delete mode 100644 src/test/data/JsonAddressBookStorageTest/invalidAndValidPersonAddressBook.json delete mode 100644 src/test/data/JsonAddressBookStorageTest/invalidPersonAddressBook.json delete mode 100644 src/test/data/JsonAddressBookStorageTest/notJsonFormatAddressBook.json delete mode 100644 src/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json delete mode 100644 src/test/data/JsonSerializableAddressBookTest/invalidPersonAddressBook.json delete mode 100644 src/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json delete mode 100644 src/test/data/JsonUserPrefsStorageTest/EmptyUserPrefs.json delete mode 100644 src/test/data/JsonUserPrefsStorageTest/ExtraValuesUserPref.json delete mode 100644 src/test/data/JsonUserPrefsStorageTest/NotJsonFormatUserPrefs.json delete mode 100644 src/test/data/JsonUserPrefsStorageTest/TypicalUserPref.json delete mode 100644 src/test/java/seedu/address/AppParametersTest.java delete mode 100644 src/test/java/seedu/address/commons/core/ConfigTest.java delete mode 100644 src/test/java/seedu/address/commons/core/GuiSettingsTest.java delete mode 100644 src/test/java/seedu/address/commons/core/VersionTest.java delete mode 100644 src/test/java/seedu/address/commons/core/index/IndexTest.java delete mode 100644 src/test/java/seedu/address/commons/util/AppUtilTest.java delete mode 100644 src/test/java/seedu/address/commons/util/CollectionUtilTest.java delete mode 100644 src/test/java/seedu/address/commons/util/ConfigUtilTest.java delete mode 100644 src/test/java/seedu/address/commons/util/FileUtilTest.java delete mode 100644 src/test/java/seedu/address/commons/util/JsonUtilTest.java delete mode 100644 src/test/java/seedu/address/commons/util/StringUtilTest.java delete mode 100644 src/test/java/seedu/address/logic/LogicManagerTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/AddCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/AddStudentCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/ClearCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/CommandResultTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/CommandTestUtil.java delete mode 100644 src/test/java/seedu/address/logic/commands/DeleteCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/EditCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/ExitCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/FindCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/HelpCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/ListCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/SortCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/AddCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/AddStudentCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/AddTeacherCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/AddressBookParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/ArgumentTokenizerTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/CommandParserTestUtil.java delete mode 100644 src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/EditCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/FindCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/ParserUtilTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/SortCommandParserTest.java delete mode 100644 src/test/java/seedu/address/model/AddressBookTest.java delete mode 100644 src/test/java/seedu/address/model/ModelManagerTest.java delete mode 100644 src/test/java/seedu/address/model/UserPrefsTest.java delete mode 100644 src/test/java/seedu/address/model/person/AddressContainsKeywordsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/person/AddressTest.java delete mode 100644 src/test/java/seedu/address/model/person/EmailContainsKeywordsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/person/EmailTest.java delete mode 100644 src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/person/NameTest.java delete mode 100644 src/test/java/seedu/address/model/person/PersonContainsKeywordsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/person/PersonTest.java delete mode 100644 src/test/java/seedu/address/model/person/PhoneContainsKeywordsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/person/PhoneTest.java delete mode 100644 src/test/java/seedu/address/model/person/StudentTest.java delete mode 100644 src/test/java/seedu/address/model/person/SubjectTest.java delete mode 100644 src/test/java/seedu/address/model/person/TagContainsKeywordsPredicateTest.java delete mode 100644 src/test/java/seedu/address/model/person/TeacherTest.java delete mode 100644 src/test/java/seedu/address/model/person/UniquePersonListTest.java delete mode 100644 src/test/java/seedu/address/model/tag/TagTest.java delete mode 100644 src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java delete mode 100644 src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java delete mode 100644 src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java delete mode 100644 src/test/java/seedu/address/storage/JsonUserPrefsStorageTest.java delete mode 100644 src/test/java/seedu/address/storage/StorageManagerTest.java delete mode 100644 src/test/java/seedu/address/testutil/AddressBookBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/Assert.java delete mode 100644 src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/PersonBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/PersonUtil.java delete mode 100644 src/test/java/seedu/address/testutil/SerializableTestClass.java delete mode 100644 src/test/java/seedu/address/testutil/StudentBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/TeacherBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/TestUtil.java delete mode 100644 src/test/java/seedu/address/testutil/TypicalIndexes.java delete mode 100644 src/test/java/seedu/address/testutil/TypicalPersons.java delete mode 100644 src/test/java/seedu/address/testutil/TypicalTeachers.java delete mode 100644 src/test/java/seedu/address/ui/TestFxmlObject.java delete mode 100644 src/test/java/seedu/address/ui/UiPartTest.java delete mode 100644 src/test/resources/view/UiPartTest/invalidFile.fxml delete mode 100644 src/test/resources/view/UiPartTest/validFile.fxml delete mode 100644 src/test/resources/view/UiPartTest/validFileWithFxRoot.fxml diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index d72fd520b1c..00000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.pdf binary diff --git a/.github/check-eof-newline.sh b/.github/check-eof-newline.sh deleted file mode 100755 index b771f3988dd..00000000000 --- a/.github/check-eof-newline.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# Checks that all text files end with a newline. - -ret=0 - -# Preserve filename with spaces by only splitting on newlines. -IFS=' -' - -for filename in $(git grep --cached -I -l -e '' -- ':/'); do - if [ "$(tail -c 1 "./$filename")" != '' ]; then - line="$(wc -l "./$filename" | cut -d' ' -f1)" - echo "ERROR:$filename:$line: no newline at EOF." - ret=1 - fi -done - -exit $ret diff --git a/.github/check-line-endings.sh b/.github/check-line-endings.sh deleted file mode 100755 index 3de67ea87f6..00000000000 --- a/.github/check-line-endings.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Checks for prohibited line endings. -# Prohibited line endings: \r\n - -git grep --cached -I -n --no-color -P '\r$' -- ':/' | -awk ' - BEGIN { - FS = ":" - OFS = ":" - ret = 0 - } - { - ret = 1 - print "ERROR", $1, $2, " prohibited \\r\\n line ending, use \\n instead." - } - END { - exit ret - } -' diff --git a/.github/check-trailing-whitespace.sh b/.github/check-trailing-whitespace.sh deleted file mode 100755 index 33841caa81f..00000000000 --- a/.github/check-trailing-whitespace.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# Checks for trailing whitespace - -git grep --cached -I -n --no-color -P '[ \t]+$' -- ':/' | -awk ' - BEGIN { - FS = ":" - OFS = ":" - ret = 0 - } - { - # Only warn for markdown files (*.md) to accomodate text editors - # which do not properly handle trailing whitespace. - # (e.g. GitHub web editor) - if ($1 ~ /\.md$/) { - severity = "WARN" - } else { - severity = "ERROR" - ret = 1 - } - print severity, $1, $2, " trailing whitespace." - } - END { - exit ret - } -' diff --git a/.github/run-checks.sh b/.github/run-checks.sh deleted file mode 100755 index 7aad1e96220..00000000000 --- a/.github/run-checks.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -# Runs all check-* scripts, and returns a non-zero exit code if any of them fail. - -dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) && -ret=0 && -for checkscript in "$dir"/check-*; do - if ! "$checkscript"; then - ret=1 - fi -done -exit $ret diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml deleted file mode 100644 index 3f454a0be30..00000000000 --- a/.github/workflows/gradle.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Java CI - -on: [push, pull_request] - -jobs: - build: - strategy: - matrix: - platform: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.platform }} - - steps: - - name: Set up repository - uses: actions/checkout@main - - - name: Set up repository - uses: actions/checkout@main - with: - ref: master - - - name: Merge to master - run: git checkout --progress --force ${{ github.sha }} - - - name: Run repository-wide tests - if: runner.os == 'Linux' - working-directory: ${{ github.workspace }}/.github - run: ./run-checks.sh - - - name: Validate Gradle Wrapper - uses: gradle/actions/wrapper-validation@v3 - - - name: Setup JDK 17 - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: '17' - java-package: jdk+fx - - - name: Build and check with Gradle - run: ./gradlew check coverage - - - name: Upload coverage reports to Codecov - if: runner.os == 'Linux' - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 284c4ca7cd9..00000000000 --- a/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# Gradle build files -/.gradle/ -/build/ -src/main/resources/docs/ - -# IDEA files -/.idea/ -/out/ -/*.iml - -# Storage/log files -/data/ -/config.json -/preferences.json -/*.log.* -hs_err_pid[0-9]*.log - -# Test sandbox files -src/test/data/sandbox/ - -# MacOS custom attributes files created by Finder -.DS_Store -docs/_site/ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 39b3478982c..00000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2016 Software Engineering Education - FOSS Resources - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index 5b2ff043bd9..00000000000 --- a/README.md +++ /dev/null @@ -1,12 +0,0 @@ -[![Java CI](https://github.com/AY2425S1-CS2103T-F12-2/tp/actions/workflows/gradle.yml/badge.svg?branch=master)](https://github.com/AY2425S1-CS2103T-F12-2/tp/actions) -[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F12-2/team-repo/branch/master/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/AY2425S1-CS2103T-F12-2/tp) - -![Ui](docs/images/Ui.png) - -* This is a brownfield team project done by Software Engineering students from the National University of Singapore (NUS). -* The project has adapted an ongoing software project for a desktop application (called AddressBook) used for managing contact details. -* It is written in OOP fashion. -* It is named EduConnect. -* It now functions as a tool for teachers to manage student details from different classes. -* For the detailed documentation of this project, see the [EduConnect Product Website](https://ay2425s1-cs2103t-f12-2.github.io/tp/). -* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 0db3743584e..00000000000 --- a/build.gradle +++ /dev/null @@ -1,72 +0,0 @@ -plugins { - id 'java' - id 'checkstyle' - id 'com.github.johnrengelman.shadow' version '7.1.2' - id 'application' - id 'jacoco' -} - -mainClassName = 'seedu.address.Main' - -sourceCompatibility = JavaVersion.VERSION_17 -targetCompatibility = JavaVersion.VERSION_17 - -repositories { - mavenCentral() - maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } -} - -checkstyle { - toolVersion = '10.2' -} - -test { - useJUnitPlatform() - finalizedBy jacocoTestReport -} - -task coverage(type: JacocoReport) { - sourceDirectories.from files(sourceSets.main.allSource.srcDirs) - classDirectories.from files(sourceSets.main.output) - executionData.from files(jacocoTestReport.executionData) - afterEvaluate { - classDirectories.from files(classDirectories.files.collect { - fileTree(dir: it, exclude: ['**/*.jar']) - }) - } - reports { - html.required = true - xml.required = true - } -} - -dependencies { - String jUnitVersion = '5.4.0' - String javaFxVersion = '17.0.7' - - implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' - implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' - implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' - implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' - implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' - implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' - implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' - implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' - implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' - - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.7.0' - implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.7.4' - - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: jUnitVersion - - testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: jUnitVersion -} - -shadowJar { - archiveFileName = 'addressbook.jar' -} - -defaultTasks 'clean', 'test' diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml deleted file mode 100644 index eb761a9b9a7..00000000000 --- a/config/checkstyle/checkstyle.xml +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml deleted file mode 100644 index 39efb6e4acb..00000000000 --- a/config/checkstyle/suppressions.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - diff --git a/copyright.txt b/copyright.txt deleted file mode 100644 index 93aa2a39ce2..00000000000 --- a/copyright.txt +++ /dev/null @@ -1,9 +0,0 @@ -Some code adapted from http://code.makery.ch/library/javafx-8-tutorial/ by Marco Jakob - -Copyright by Susumu Yoshida - http://www.mcdodesign.com/ -- address_book_32.png -- AddressApp.ico - -Copyright by Jan Jan Kovařík - http://glyphicons.com/ -- calendar.png -- edit.png diff --git a/docs/AboutUs.md b/docs/AboutUs.md deleted file mode 100644 index cf71c91d4ec..00000000000 --- a/docs/AboutUs.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -layout: page -title: About Us ---- - -We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg). - -You can reach us at the email `seer[at]comp.nus.edu.sg` - -## Project team - -### Garg Maahir Rajesh - - - -[[github](http://github.com/maahir-garg)] -[[portfolio](team/johndoe.md)] - -* Role: Team Lead -* Responsibilities: UI - -### Goel Arnav - - - -[[github](http://github.com/arnaxx54)] [[portfolio](team/johndoe.md)] - -* Role: Developer -* Responsibilities: Data - -### Nihal Ramesh - - - -[[github](http://github.com/nihalramesh12629)] -[[portfolio](team/johndoe.md)] - -* Role: Developer -* Responsibilities: Dev Ops + Threading - -### Adrian Leonardo Liang - - - -[[github](http://github.com/AgentHagu)] -[[portfolio](team/agenthagu.md)] - -* Role: Developer -* Responsibilities: UI - -### Amos Chee Tian Ee - - - -[[github](https://github.com/amoschee)] -[[portfolio](team/amoschee.md)] diff --git a/docs/Configuration.md b/docs/Configuration.md deleted file mode 100644 index 13cf0faea16..00000000000 --- a/docs/Configuration.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: page -title: Configuration guide ---- - -Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`). diff --git a/docs/DevOps.md b/docs/DevOps.md deleted file mode 100644 index d2fd91a6001..00000000000 --- a/docs/DevOps.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -layout: page -title: DevOps guide ---- - -* Table of Contents -{:toc} - --------------------------------------------------------------------------------------------------------------------- - -## Build automation - -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)**. - - -Given below are how to use Gradle for some important project tasks. - - -* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).
- e.g. `./gradlew clean` - -* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.
- e.g. `./gradlew shadowJar`. - -* **`run`**: Builds and runs the application.
- **`runShadow`**: Builds the application as a fat JAR, and then runs it. - -* **`checkstyleMain`**: Runs the code style check for the main code base.
- **`checkstyleTest`**: Runs the code style check for the test code base. - -* **`test`**: Runs all tests. - * `./gradlew test` — Runs all tests - * `./gradlew clean test` — Cleans the project and runs tests - --------------------------------------------------------------------------------------------------------------------- - -## Continuous integration (CI) - -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. - -### Code coverage - -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. - -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. - -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). - -### Repository-wide checks - -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. - -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: - -`./config/travis/run-checks.sh` - -Any warnings or errors will be printed out to the console. - -**If adding new checks:** - -* 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. - -* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE` - * SEVERITY is either ERROR or WARN. - * FILENAME is the path to the file relative to the current directory. - * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error. - -* Check scripts must exit with a non-zero exit code if any errors occur. - --------------------------------------------------------------------------------------------------------------------- - -## Making a release - -Here are the steps to create a new release. - -1. Update the version number in [`MainApp.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java). -1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`). -1. Tag the repo with the version number. e.g. `v0.1` -1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created. diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md deleted file mode 100644 index 602d17672b5..00000000000 --- a/docs/DeveloperGuide.md +++ /dev/null @@ -1,568 +0,0 @@ ---- -layout: page -title: Developer Guide ---- -* Table of Contents -{:toc} - --------------------------------------------------------------------------------------------------------------------- - -## **Acknowledgements** - -* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} - --------------------------------------------------------------------------------------------------------------------- - -## **Setting up, getting started** - -Refer to the guide [_Setting up and getting started_](SettingUp.md). - --------------------------------------------------------------------------------------------------------------------- - -## **Design** - -
- -: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. -
- -### Architecture - - - -The ***Architecture Diagram*** given above explains the high-level design of the App. - -Given below is a quick overview of main components and how they interact with each other. - -**Main components of the architecture** - -**`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. -* At app launch, it initializes the other components in the correct sequence, and connects them up with each other. -* At shut down, it shuts down the other components and invokes cleanup methods where necessary. - -The bulk of the app's work is done by the following four components: - -* [**`UI`**](#ui-component): The UI of the App. -* [**`Logic`**](#logic-component): The command executor. -* [**`Model`**](#model-component): Holds the data of the App in memory. -* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk. - -[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components. - -**How the architecture components interact with each other** - -The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`. - - - -Each of the four main components (also shown in the diagram above), - -* defines its *API* in an `interface` with the same name as the Component. -* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point. - -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's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. - - - -The sections below give more details of each component. - -### UI component - -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) - -![Structure of the UI Component](images/UiClassDiagram.png) - -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. - -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) - -The `UI` component, - -* executes user commands using the `Logic` component. -* listens for changes to `Model` data so that the UI can be updated with the modified data. -* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. -* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`. - -### Logic component - -**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java) - -Here's a (partial) class diagram of the `Logic` component: - - - -The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API call as an example. - -![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png) - -
: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. -
- -How the `Logic` component works: - -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. -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`. -1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).
- 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. -1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`. - -Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command: - - - -How the parsing works: -* 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. -* 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. - -### Model component -**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java) - - - - -The `Model` component, - -* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). -* stores the currently 'selected' `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList` that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. -* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. -* 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) - -
: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.
- - - -
- - -### Storage component - -**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java) - - - -The `Storage` component, -* can save both address book data and user preference data in JSON format, and read them back into corresponding objects. -* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed). -* depends on some classes in the `Model` component (because the `Storage` component's job is to save/retrieve objects that belong to the `Model`) - -### Common classes - -Classes used by multiple components are in the `seedu.address.commons` package. - --------------------------------------------------------------------------------------------------------------------- - -## **Implementation** - -This section describes some noteworthy details on how certain features are implemented. - -### \[Proposed\] Undo/redo feature - -#### Proposed Implementation - -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: - -* `VersionedAddressBook#commit()` — Saves the current address book state in its history. -* `VersionedAddressBook#undo()` — Restores the previous address book state from its history. -* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history. - -These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively. - -Given below is an example usage scenario and how the undo/redo mechanism behaves at each step. - -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. - -![UndoRedoState0](images/UndoRedoState0.png) - -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. - -![UndoRedoState1](images/UndoRedoState1.png) - -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`. - -![UndoRedoState2](images/UndoRedoState2.png) - -
: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`. - -
- -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. - -![UndoRedoState3](images/UndoRedoState3.png) - -
: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 -than attempting to perform the undo. - -
- -The following sequence diagram shows how an undo operation goes through the `Logic` component: - -![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png) - -
: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. - -
- -Similarly, how an undo operation goes through the `Model` component is shown below: - -![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png) - -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. - -
: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. - -
- -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. - -![UndoRedoState4](images/UndoRedoState4.png) - -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. - -![UndoRedoState5](images/UndoRedoState5.png) - -The following activity diagram summarizes what happens when a user executes a new command: - - - -#### Design considerations: - -**Aspect: How undo & redo executes:** - -* **Alternative 1 (current choice):** Saves the entire address book. - * Pros: Easy to implement. - * Cons: May have performance issues in terms of memory usage. - -* **Alternative 2:** Individual command knows how to undo/redo by - itself. - * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted). - * Cons: We must ensure that the implementation of each individual command are correct. - -_{more aspects and alternatives to be added}_ - -### \[Proposed\] Data archiving - -_{Explain here how the data archiving feature will be implemented}_ - - --------------------------------------------------------------------------------------------------------------------- - -## **Documentation, logging, testing, configuration, dev-ops** - -* [Documentation guide](Documentation.md) -* [Testing guide](Testing.md) -* [Logging guide](Logging.md) -* [Configuration guide](Configuration.md) -* [DevOps guide](DevOps.md) - --------------------------------------------------------------------------------------------------------------------- - -## **Appendix: Requirements** - -### Product scope - -**Target user profile**: -School teachers looking to manage the details of both students and other teachers -* needs to keep track of many students at a time -* can type fast -* prefers to type in a command line interface -* uses a small set of commands -* makes frequent typos but hates to backtrack with backspace -* likes to have an autocomplete suggestion - -**Value proposition**: EduConnect will provide a faster and more convenient way to manage details of students and teachers than other apps. - - -### User stories - -Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` - -| Priority​ | As a …​ | I want to …​ | So that I can…​ | -|-----------|---------------------------|---------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------| -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | teacher | add a new student and their details | | -| `* * *` | teacher | remove/delete a student from the app | remove entries that I no longer need | -| `* * *` | teacher | add a new teacher and their details | find information on other teachers if need be | -| `* * *` | teacher | remove/delete a teacher from the app | remove entries that I no longer need | -| `* * *` | teacher | edit or update information of a student | keep the data stored accurate and up to date | -| `* *` | teacher | clear all student/class data from the previous semester/year | reset the app for the new semester/year | -| `* *` | teacher | search for students by some partial information | quickly find a list of students without recalling specific details | -| `* *` | teacher | tag and filter students based on specific attributes | access relevant groups without manually searching every time | -| `*` | teacher new to EduConnect | see a sample version of how the app will look with sample data | better visualise the workflow or how the app will work or look | -| `*` | teacher who makes typos | have flexibility in typos for the commands | continue writing commands without needing to rewrite or backspace | -| `*` | teacher familiar with CLI | use shortcuts or linux-like commands | enter commands faster and more familiar to me | -| `*` | teacher | export student list and contact information to various formats | share and archive data easily for administrative purposes | -| `*` | teacher | switch between different classes using keybinds | navigate between different groups of students efficiently | -| `*` | teacher | have an undo/redo command for recent actions | quickly correct mistakes or revert changes | -| `*` | teacher | create custom command aliases for frequently used commands | streamline my workflow and reduce the number of keystrokes needed | -| `*` | teacher | have built-in calendar integration that links student info with important dates (e.g. parent meetings, exams) | easily access all relevant student data when preparing for key events | -| `*` | teacher | quickly generate printable class rosters with selected details (e.g. names, contact info, emergency contacts) | have a physical copy for field trips or offline use | -| `*` | teacher | have a dark mode or customizable themes for the interface | reduce eye strain while managing student data at night | -| `*` | teacher | use natural language input for commands (e.g. "add student John Doe to class 5a") | enter commands more intuitively without memorising specific syntax | -| `*` | teacher | group students based on customizable criteria (e.g. performance level, participation) | easily view and manage students with similar needs | -| `*` | teacher | get the contact details of a frequently searched contact | quickly use it to contact a student | -| `*` | teacher | systematically add the contact details of twins who share similar details | have a smaller chance of having errors | - -### Use cases - -(For all use cases below, the System is EduConnect and the Actor is a Teacher (User), unless specified otherwise) - -**Use case: UC01 - Add a student** - -**Preconditions** -* User has the student’s details, i.e. name, gender, contact, classes, subject and email - -**MSS** - -1. Teacher enters the add student command -2. EduConnect verifies the command inputs -3. EduConnect adds the student’s contact details to the address book -4. EduConnect displays a success message - - Use case ends. - -**Extensions** - -* 2a. Parameter(s) missing in command format - * 2a1. EduConnect displays an error message, e.g. “Email parameter is missing! Ensure that you give values for /name /gender /contact /classes /subject /email” - - Use case ends. - -* 2b. Invalid/Unsupported parameter tag used - * 2b1. EduConnect displays an error message, e.g. “Invalid detail to add! Please use the following options: name, gender, contact, classes, subject, email” - - Use case ends. - -* 2c. Invalid argument for a parameter given - * 2c1. EduConnect displays an error message, e.g. “Name given is invalid! Please give a name that fits: First name and last name (with optional middle names)” - - Use case ends. - -* 2d. Existing contact or email given - * 2d1. EduConnect displays an error message, e.g. “The email boydanderson@gmail.com is already in use” - - Use case ends. - -**Use case: UC02 - Add a teacher** - -**Preconditions** -* User has the teacher’s details, i.e. name, gender, contact, classes, subject and email. - -**MSS** -1. Teacher enters the add teacher command -2. EduConnect verifies the command inputs -3. EduConnect adds the teacher’s contact details to the address book -4. EduConnect displays a success message - - Use case ends. - -**Extensions** -* 2a. Parameter(s) missing in command format - * 2a1. EduConnect displays an error message, e.g. “Email parameter is missing! Ensure that you give values for /name /gender /contact /classes /subject /email” - - Use case ends. - -* 2b. Invalid/Unsupported parameter tag used - * 2b1. EduConnect displays an error message, e.g. “Invalid detail to add! Please use the following options: name, gender, contact, classes, subject, email” - - Use case ends. - -* 2c. Invalid argument for a parameter given - * 2c1. EduConnect displays an error message, e.g. “Name given is invalid! Please give a name that fits: First name and last name (with optional middle names)” - - Use case ends. - -* 2d. Existing contact or email given - * 2d1. EduConnect displays an error message, e.g. “The email boydanderson@gmail.com is already in use” - - Use case ends. - -**Use case: UC-03 Delete a contact** - -**Preconditions** -* The address book contains at least one contact -* User knows the index of the contact to be deleted - -**MSS** -1. Teacher enters the delete contact command -2. EduConnect verifies the index validity -3. EduConnect deletes the contact from the address book -4. EduConnect displays a success message - - Use case ends. - -**Extensions** -* 2a. Invalid index provided - * 2a1. EduConnect displays an error message, e.g. “Invalid index provided, enter an integer between [0, 10)” - - Use case ends. - -**Use case: UC-04 List contacts** - -**Preconditions** -* User may optionally specify filter criteria using tags - -**MSS** -1. Teacher enters the list command -2. EduConnect displays a list of all contacts in the address book - - Use case ends. - -**Extensions** -* 1a. Teacher specifies some filter criteria using valid tags - * 1a1. EduConnect displays a list of all contacts that fit that criteria in the address book - - Use case ends. - -* 1b. Teacher uses invalid tags to filter - * 1b1. EduConnect displays an error message, e.g. “Invalid detail to find with! Please use one of the following options: name, gender, contact, classes, subject, email” - - Use case ends. - -**Use case: UC-05 Edit a contact** - -**Preconditions** -* The address book contains at least one contact -* User knows the index of the contact to be edited - -**MSS** -1. Teacher enters the edit command -2. EduConnect verifies the command inputs -3. EduConnect edits the specified contact in the address book -4. EduConnect displays a success message - - Use case ends. - -**Extensions** -* 2a. Invalid index provided - * 2a1. EduConnect displays an error message, e.g. “Invalid index provided, enter an integer between [0, 10)” - - Use case ends. - -* 2b. Invalid/Unsupported parameter tag used - * 2b1. EduConnect displays an error message, e.g. “Invalid detail to edit! Please use the following options: name, gender, contact, classes, subject, email” - - Use case ends. - -* 2c. Invalid new argument for a parameter given - * 2c1. EduConnect displays an error message, e.g. “New name given is invalid! Please give a name that fits: First name and last name (with optional middle names)” - - Use case ends. - -* 2d. Duplicate contact or email provided - * 2d1. EduConnect displays an error message, e.g. “The email boydanderson@gmail.com is already in use” - - Use case ends. - -**Use case: UC-06 Clear** - -**Preconditions** -* User may optionally specify the occupation (teacher or student) and tags to filter which contacts are cleared - -**MSS** -1. Teacher enters the clear command -2. EduConnect clears all contacts in the address book -3. EduConnect displays a success message - - Use case ends. - -**Extensions** -* 1a. Teacher specifies an occupation to clear - * 1a1. EduConnect clears all contacts of that occupation in the address book - - Use case ends. - -* 1b. Teacher specifies an invalid occupation - * 1b1. EduConnect displays an error message, e.g. “Invalid occupation to clear, please specify either teacher or student” - - Use case ends. - -* 1c. Teacher specifies a tag to clear - * 1c1. EduConnect clears all contacts with that tag value in the address book - - Use case ends. - -* 1d. Teacher specifies an invalid tag - * 1d1. EduConnect displays an error message, e.g. “Invalid detail to clear with! Please use one of the following options: name, gender, contact, classes, subject, email” - - Use case ends. - -* 1e. Teacher specifies an occupation or tag with no matching contacts - * 1e1. EduConnect displays a warning, e.g. “No contacts matching the specified filter, no changes made to address book” - - Use case ends. - -### Non-Functional Requirements - -1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed. -2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -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. -4. The system should handle errors gracefully, providing clear error messages for invalid inputs or operations. -5. The system should be platform-independent and capable of running on any operating system that supports Java, ensuring that users across different platforms can use the program. -6. The code should be well-documented, enabling developers to maintain and upgrade the system efficiently. -7. The system should be modular, allowing for easy extension in the future (e.g., adding new fields for contacts or new types of commands). - -### Glossary - -* **Mainstream OS**: Windows, Linux, Unix, MacOS -* **Private contact detail**: A contact detail that is not meant to be shared with others -* **Subject**: The subject the student / teacher is taking -* **Class**: The class the student / teacher is taking -* **Command Line Interface (CLI)**: Text-based user interface that allows the user to input -* **Next-of-Kin**: The contact of the closest relative of the current contact -* **Database**: An organized collection of structured information or data, typically stored electronically. -* **GUI (Graphical User Interface)**: A visual user interface that allows users to interact with an application through graphical elements like buttons, icons, and menus, instead of typing commands. -* **Encryption**: The process of converting plain text data into a coded format to prevent unauthorized access. -* **Version Control**: A system that records changes to a file or set of files over time, allowing developers to track and manage revisions. - --------------------------------------------------------------------------------------------------------------------- - -## **Appendix: Instructions for manual testing** - -Given below are instructions to test the app manually. - -
:information_source: **Note:** These instructions only provide a starting point for testers to work on; -testers are expected to do more *exploratory* testing. - -
- -### Launch and shutdown - -1. Initial launch - - 1. Download the jar file and copy into an empty folder - - 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. - -1. Saving window preferences - - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. - - 1. Re-launch the app by double-clicking the jar file.
- Expected: The most recent window size and location is retained. - -1. _{ more test cases …​ }_ - -### Deleting a person - -1. Deleting a person while all persons are being shown - - 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list. - - 1. Test case: `delete 1`
- 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. - - 1. Test case: `delete 0`
- Expected: No person is deleted. Error details shown in the status message. Status bar remains the same. - - 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)
- Expected: Similar to previous. - -1. _{ more test cases …​ }_ - -### Saving data - -1. Dealing with missing/corrupted data files - - 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_ - -1. _{ more test cases …​ }_ diff --git a/docs/Documentation.md b/docs/Documentation.md deleted file mode 100644 index 3e68ea364e7..00000000000 --- a/docs/Documentation.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: Documentation guide ---- - -**Setting up and maintaining the project website:** - -* We use [**Jekyll**](https://jekyllrb.com/) to manage documentation. -* The `docs/` folder is used for documentation. -* To learn how set it up and maintain the project website, follow the guide [_[se-edu/guides] **Using Jekyll for project documentation**_](https://se-education.org/guides/tutorials/jekyll.html). -* Note these points when adapting the documentation to a different project/product: - * The 'Site-wide settings' section of the page linked above has information on how to update site-wide elements such as the top navigation bar. - * :bulb: In addition to updating content files, you might have to update the config files `docs\_config.yml` and `docs\_sass\minima\_base.scss` (which contains a reference to `AB-3` that comes into play when converting documentation pages to PDF format). -* If you are using Intellij for editing documentation files, you can consider enabling 'soft wrapping' for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping) - - -**Style guidance:** - -* Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style). - -* Also relevant is the [_[se-edu/guides] **Markdown coding standard**_](https://se-education.org/guides/conventions/markdown.html) - -**Diagrams:** - -* See the [_[se-edu/guides] **Using PlantUML**_](https://se-education.org/guides/tutorials/plantUml.html) - -**Converting a document to the PDF format:** - -* See the guide [_[se-edu/guides] **Saving web documents as PDF files**_](https://se-education.org/guides/tutorials/savingPdf.html) diff --git a/docs/Gemfile b/docs/Gemfile deleted file mode 100644 index c8385d85874..00000000000 --- a/docs/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } - -gem 'jekyll' -gem 'github-pages', group: :jekyll_plugins -gem 'wdm', '~> 0.1.0' if Gem.win_platform? -gem 'webrick' diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock deleted file mode 100644 index bac5eb36d35..00000000000 --- a/docs/Gemfile.lock +++ /dev/null @@ -1,269 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - activesupport (7.0.7.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - addressable (2.8.4) - public_suffix (>= 2.0.2, < 6.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.11.1) - colorator (1.1.0) - commonmarker (0.23.10) - concurrent-ruby (1.2.2) - dnsruby (1.70.0) - simpleidn (~> 0.2.1) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - ethon (0.16.0) - ffi (>= 1.15.0) - eventmachine (1.2.7) - eventmachine (1.2.7-x64-mingw32) - execjs (2.8.1) - faraday (2.7.5) - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - ffi (1.15.5) - ffi (1.15.5-x64-mingw32) - forwardable-extended (2.6.0) - gemoji (3.0.1) - github-pages (228) - github-pages-health-check (= 1.17.9) - jekyll (= 3.9.3) - jekyll-avatar (= 0.7.0) - jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.4.0) - jekyll-default-layout (= 0.1.4) - jekyll-feed (= 0.15.1) - jekyll-gist (= 1.5.0) - jekyll-github-metadata (= 2.13.0) - jekyll-include-cache (= 0.2.1) - jekyll-mentions (= 1.6.0) - jekyll-optional-front-matter (= 0.3.2) - jekyll-paginate (= 1.1.0) - jekyll-readme-index (= 0.3.0) - jekyll-redirect-from (= 0.16.0) - jekyll-relative-links (= 0.6.1) - jekyll-remote-theme (= 0.4.3) - jekyll-sass-converter (= 1.5.2) - jekyll-seo-tag (= 2.8.0) - jekyll-sitemap (= 1.4.0) - jekyll-swiss (= 1.0.0) - jekyll-theme-architect (= 0.2.0) - jekyll-theme-cayman (= 0.2.0) - jekyll-theme-dinky (= 0.2.0) - jekyll-theme-hacker (= 0.2.0) - jekyll-theme-leap-day (= 0.2.0) - jekyll-theme-merlot (= 0.2.0) - jekyll-theme-midnight (= 0.2.0) - jekyll-theme-minimal (= 0.2.0) - jekyll-theme-modernist (= 0.2.0) - jekyll-theme-primer (= 0.6.0) - jekyll-theme-slate (= 0.2.0) - jekyll-theme-tactile (= 0.2.0) - jekyll-theme-time-machine (= 0.2.0) - jekyll-titles-from-headings (= 0.5.3) - jemoji (= 0.12.0) - kramdown (= 2.3.2) - kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.4) - mercenary (~> 0.3) - minima (= 2.5.1) - nokogiri (>= 1.13.6, < 2.0) - rouge (= 3.26.0) - terminal-table (~> 1.4) - github-pages-health-check (1.17.9) - addressable (~> 2.3) - dnsruby (~> 1.60) - octokit (~> 4.0) - public_suffix (>= 3.0, < 5.0) - typhoeus (~> 1.3) - html-pipeline (2.14.3) - activesupport (>= 2) - nokogiri (>= 1.4) - http_parser.rb (0.8.0) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - jekyll (3.9.3) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (>= 0.7, < 2) - jekyll-sass-converter (~> 1.0) - jekyll-watch (~> 2.0) - kramdown (>= 1.17, < 3) - liquid (~> 4.0) - mercenary (~> 0.3.3) - pathutil (~> 0.9) - rouge (>= 1.7, < 4) - safe_yaml (~> 1.0) - jekyll-avatar (0.7.0) - jekyll (>= 3.0, < 5.0) - jekyll-coffeescript (1.1.1) - coffee-script (~> 2.2) - coffee-script-source (~> 1.11.1) - jekyll-commonmark (1.4.0) - commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.4.0) - commonmarker (~> 0.23.7) - jekyll (~> 3.9.0) - jekyll-commonmark (~> 1.4.0) - rouge (>= 2.0, < 5.0) - jekyll-default-layout (0.1.4) - jekyll (~> 3.0) - jekyll-feed (0.15.1) - jekyll (>= 3.7, < 5.0) - jekyll-gist (1.5.0) - octokit (~> 4.2) - jekyll-github-metadata (2.13.0) - jekyll (>= 3.4, < 5.0) - octokit (~> 4.0, != 4.4.0) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-mentions (1.6.0) - html-pipeline (~> 2.3) - jekyll (>= 3.7, < 5.0) - jekyll-optional-front-matter (0.3.2) - jekyll (>= 3.0, < 5.0) - jekyll-paginate (1.1.0) - jekyll-readme-index (0.3.0) - jekyll (>= 3.0, < 5.0) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) - jekyll-relative-links (0.6.1) - jekyll (>= 3.3, < 5.0) - jekyll-remote-theme (0.4.3) - addressable (~> 2.0) - jekyll (>= 3.5, < 5.0) - jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) - rubyzip (>= 1.3.0, < 3.0) - jekyll-sass-converter (1.5.2) - sass (~> 3.4) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-sitemap (1.4.0) - jekyll (>= 3.7, < 5.0) - jekyll-swiss (1.0.0) - jekyll-theme-architect (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-cayman (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-dinky (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-hacker (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-leap-day (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-merlot (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-midnight (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-minimal (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-modernist (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-primer (0.6.0) - jekyll (> 3.5, < 5.0) - jekyll-github-metadata (~> 2.9) - jekyll-seo-tag (~> 2.0) - jekyll-theme-slate (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-tactile (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-theme-time-machine (0.2.0) - jekyll (> 3.5, < 5.0) - jekyll-seo-tag (~> 2.0) - jekyll-titles-from-headings (0.5.3) - jekyll (>= 3.3, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jemoji (0.12.0) - gemoji (~> 3.0) - html-pipeline (~> 2.2) - jekyll (>= 3.0, < 5.0) - kramdown (2.3.2) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.3.6) - mini_portile2 (2.8.6) - minima (2.5.1) - jekyll (>= 3.5, < 5.0) - jekyll-feed (~> 0.9) - jekyll-seo-tag (~> 2.1) - minitest (5.19.0) - nokogiri (1.16.5) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) - octokit (4.25.1) - faraday (>= 1, < 3) - sawyer (~> 0.9) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (4.0.7) - racc (1.7.3) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.3.6) - strscan - rouge (3.26.0) - ruby2_keywords (0.0.5) - rubyzip (2.3.2) - safe_yaml (1.0.5) - sass (3.7.4) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.2) - addressable (>= 2.3.5) - faraday (>= 0.17.3, < 3) - simpleidn (0.2.1) - unf (~> 0.1.4) - strscan (3.1.0) - terminal-table (1.8.0) - unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.0) - ethon (>= 0.9.0) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.8.2) - unf_ext (0.0.8.2-x64-mingw32) - unicode-display_width (1.8.0) - webrick (1.8.1) - -PLATFORMS - ruby - x64-mingw32 - -DEPENDENCIES - github-pages - jekyll - webrick - -BUNDLED WITH - 2.1.4 diff --git a/docs/Logging.md b/docs/Logging.md deleted file mode 100644 index 5e4fb9bc217..00000000000 --- a/docs/Logging.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: page -title: Logging guide ---- - -* We are using `java.util.logging` package for logging. -* The `LogsCenter` class is used to manage the logging levels and logging destinations. -* The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level. -* Log messages are output through the console and to a `.log` file. -* The output logging level can be controlled using the `logLevel` setting in the configuration file (See the [Configuration guide](Configuration.md) section). -* **When choosing a level for a log message**, follow the conventions given in [_[se-edu/guides] Java: Logging conventions_](https://se-education.org/guides/conventions/java/logging.html). diff --git a/docs/SettingUp.md b/docs/SettingUp.md deleted file mode 100644 index 9f832a19674..00000000000 --- a/docs/SettingUp.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -layout: page -title: Setting up and getting started ---- - -* Table of Contents -{:toc} - - --------------------------------------------------------------------------------------------------------------------- - -## Setting up the project in your computer - -
:exclamation: **Caution:** - -Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps. -
- -First, **fork** this repo, and **clone** the fork into your computer. - -If you plan to use Intellij IDEA (highly recommended): -1. **Configure the JDK**: Follow the guide [_[se-edu/guides] IDEA: Configuring the JDK_](https://se-education.org/guides/tutorials/intellijJdk.html) to ensure Intellij is configured to use **JDK 17**. -1. **Import the project as a Gradle project**: Follow the guide [_[se-edu/guides] IDEA: Importing a Gradle project_](https://se-education.org/guides/tutorials/intellijImportGradleProject.html) to import the project into IDEA.
- :exclamation: Note: Importing a Gradle project is slightly different from importing a normal Java project. -1. **Verify the setup**: - 1. Run the `seedu.address.Main` and try a few commands. - 1. [Run the tests](Testing.md) to ensure they all pass. - --------------------------------------------------------------------------------------------------------------------- - -## Before writing code - -1. **Configure the coding style** - - If using IDEA, follow the guide [_[se-edu/guides] IDEA: Configuring the code style_](https://se-education.org/guides/tutorials/intellijCodeStyle.html) to set up IDEA's coding style to match ours. - -
:bulb: **Tip:** - - Optionally, you can follow the guide [_[se-edu/guides] Using Checkstyle_](https://se-education.org/guides/tutorials/checkstyle.html) to find how to use the CheckStyle within IDEA e.g., to report problems _as_ you write code. -
- -1. **Set up CI** - - This project comes with a GitHub Actions config files (in `.github/workflows` folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the `master` branch or to any PR. No set up required. - -1. **Learn the design** - - When you are ready to start coding, we recommend that you get some sense of the overall design by reading about [AddressBook’s architecture](DeveloperGuide.md#architecture). - -1. **Do the tutorials** - These tutorials will help you get acquainted with the codebase. - - * [Tracing code](tutorials/TracingCode.md) - * [Adding a new command](tutorials/AddRemark.md) - * [Removing fields](tutorials/RemovingFields.md) diff --git a/docs/Testing.md b/docs/Testing.md deleted file mode 100644 index 8a99e82438a..00000000000 --- a/docs/Testing.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: Testing guide ---- - -* Table of Contents -{:toc} - --------------------------------------------------------------------------------------------------------------------- - -## Running tests - -There are two ways to run tests. - -* **Method 1: Using IntelliJ JUnit test runner** - * To run all tests, right-click on the `src/test/java` folder and choose `Run 'All Tests'` - * To run a subset of tests, you can right-click on a test package, - test class, or a test and choose `Run 'ABC'` -* **Method 2: Using Gradle** - * Open a console and run the command `gradlew clean test` (Mac/Linux: `./gradlew clean test`) - -
:link: **Link**: Read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html) to learn more about using Gradle. -
- --------------------------------------------------------------------------------------------------------------------- - -## Types of tests - -This project has three types of tests: - -1. *Unit tests* targeting the lowest level methods/classes.
- e.g. `seedu.address.commons.StringUtilTest` -1. *Integration tests* that are checking the integration of multiple code units (those code units are assumed to be working).
- e.g. `seedu.address.storage.StorageManagerTest` -1. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.
- e.g. `seedu.address.logic.LogicManagerTest` diff --git a/docs/UserGuide.md b/docs/UserGuide.md deleted file mode 100644 index 84b4ddc4e40..00000000000 --- a/docs/UserGuide.md +++ /dev/null @@ -1,199 +0,0 @@ ---- -layout: page -title: User Guide ---- - -AddressBook Level 3 (AB3) 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, AB3 can get your contact management tasks done faster than traditional GUI apps. - -* Table of Contents -{:toc} - --------------------------------------------------------------------------------------------------------------------- - -## Quick start - -1. Ensure you have Java `17` or above installed in your Computer. - -1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases). - -1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook. - -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.
- A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
- ![Ui](images/Ui.png) - -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.
- Some example commands you can try: - - * `list` : Lists all contacts. - - * `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. - - * `delete 3` : Deletes the 3rd contact shown in the current list. - - * `clear` : Deletes all contacts. - - * `exit` : Exits the app. - -1. Refer to the [Features](#features) below for details of each command. - --------------------------------------------------------------------------------------------------------------------- - -## Features - -
- -**:information_source: Notes about the command format:**
- -* Words in `UPPER_CASE` are the parameters to be supplied by the user.
- e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. - -* Items in square brackets are optional.
- e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. - -* Items with `…`​ after them can be used multiple times including zero times.
- e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. - -* Parameters can be in any order.
- e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. - -* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
- e.g. if the command specifies `help 123`, it will be interpreted as `help`. - -* 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. -
- -### Viewing help : `help` - -Shows a message explaning how to access the help page. - -![help message](images/helpMessage.png) - -Format: `help` - - -### Adding a person: `add` - -Adds a person to the address book. - -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` - -
:bulb: **Tip:** -A person can have any number of tags (including 0) -
- -Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` - -### Listing all persons : `list` - -Shows a list of all persons in the address book. - -Format: `list` - -### Editing a person : `edit` - -Edits an existing person in the address book. - -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` - -* 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, …​ -* At least one of the optional fields must be provided. -* Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person’s tags by typing `t/` without - specifying any tags after it. - -Examples: -* `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. -* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. - -### Locating persons by name: `find` - -Finds persons whose names contain any of the given keywords. - -Format: `find KEYWORD [MORE_KEYWORDS]` - -* The search is case-insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). - e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` - -Examples: -* `find John` returns `john` and `John Doe` -* `find alex david` returns `Alex Yeoh`, `David Li`
- ![result for 'find alex david'](images/findAlexDavidResult.png) - -### Deleting a person : `delete` - -Deletes the specified person from the address book. - -Format: `delete INDEX` - -* Deletes 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, …​ - -Examples: -* `list` followed by `delete 2` deletes the 2nd person in the address book. -* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command. - -### Clearing all entries : `clear` - -Clears all entries from the address book. - -Format: `clear` - -### Exiting the program : `exit` - -Exits the program. - -Format: `exit` - -### Saving the data - -AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. - -### Editing the data file - -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. - -
:exclamation: **Caution:** -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.
-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. -
- -### Archiving data files `[coming in v2.0]` - -_Details coming soon ..._ - --------------------------------------------------------------------------------------------------------------------- - -## FAQ - -**Q**: How do I transfer my data to another Computer?
-**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. - --------------------------------------------------------------------------------------------------------------------- - -## Known issues - -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. -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. - --------------------------------------------------------------------------------------------------------------------- - -## Command summary - -Action | Format, Examples ---------|------------------ -**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -**Clear** | `clear` -**Delete** | `delete INDEX`
e.g., `delete 3` -**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`
e.g.,`edit 2 n/James Lee e/jameslee@example.com` -**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake` -**List** | `list` -**Help** | `help` diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 3cfe9fc7917..00000000000 --- a/docs/_config.yml +++ /dev/null @@ -1,15 +0,0 @@ -title: "EduConnect" -theme: minima - -header_pages: - - UserGuide.md - - DeveloperGuide.md - - AboutUs.md - -markdown: kramdown - -repository: "AY2425S1-CS2103T-F12-2/tp" -github_icon: "images/github-icon.png" - -plugins: - - jemoji diff --git a/docs/_data/projects.yml b/docs/_data/projects.yml deleted file mode 100644 index 8f3e50cb601..00000000000 --- a/docs/_data/projects.yml +++ /dev/null @@ -1,23 +0,0 @@ -- name: "AB-1" - url: https://se-edu.github.io/addressbook-level1 - -- name: "AB-2" - url: https://se-edu.github.io/addressbook-level2 - -- name: "AB-3" - url: https://se-edu.github.io/addressbook-level3 - -- name: "AB-4" - url: https://se-edu.github.io/addressbook-level4 - -- name: "Duke" - url: https://se-edu.github.io/duke - -- name: "Collate" - url: https://se-edu.github.io/collate - -- name: "Book" - url: https://se-edu.github.io/se-book - -- name: "Resources" - url: https://se-edu.github.io/resources diff --git a/docs/_includes/custom-head.html b/docs/_includes/custom-head.html deleted file mode 100644 index 8559a67ffad..00000000000 --- a/docs/_includes/custom-head.html +++ /dev/null @@ -1,6 +0,0 @@ -{% comment %} - Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons: - - 1. Head over to https://realfavicongenerator.net/ to add your own favicons. - 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet. -{% endcomment %} diff --git a/docs/_includes/head.html b/docs/_includes/head.html deleted file mode 100644 index 83ac5326933..00000000000 --- a/docs/_includes/head.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - {%- include custom-head.html -%} - - {{page.title}} - - diff --git a/docs/_includes/header.html b/docs/_includes/header.html deleted file mode 100644 index 33badcd4f99..00000000000 --- a/docs/_includes/header.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/docs/_layouts/alt-page.html b/docs/_layouts/alt-page.html deleted file mode 100644 index 5dbc6ef245f..00000000000 --- a/docs/_layouts/alt-page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.alt_title | escape }}

-
- -
- {{ content }} -
- -
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html deleted file mode 100644 index e092cd572e0..00000000000 --- a/docs/_layouts/default.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - {%- include head.html -%} - - - - {%- include header.html -%} - -
-
- {{ content }} -
-
- - - - diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html deleted file mode 100644 index 01e4b2a93b8..00000000000 --- a/docs/_layouts/page.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.title | escape }}

-
- -
- {{ content }} -
- -
diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss deleted file mode 100644 index c153a4b46f5..00000000000 --- a/docs/_sass/minima/_base.scss +++ /dev/null @@ -1,294 +0,0 @@ -html { - font-size: $base-font-size; -} - -/** - * Reset some basic elements - */ -body, h1, h2, h3, h4, h5, h6, -p, blockquote, pre, hr, -dl, dd, ol, ul, figure { - margin: 0; - padding: 0; - -} - - - -/** - * Basic styling - */ -body { - font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family; - color: $text-color; - background-color: $background-color; - -webkit-text-size-adjust: 100%; - -webkit-font-feature-settings: "kern" 1; - -moz-font-feature-settings: "kern" 1; - -o-font-feature-settings: "kern" 1; - font-feature-settings: "kern" 1; - font-kerning: normal; - display: flex; - min-height: 100vh; - flex-direction: column; - overflow-wrap: break-word; -} - - - -/** - * Set `margin-bottom` to maintain vertical rhythm - */ -h1, h2, h3, h4, h5, h6, -p, blockquote, pre, -ul, ol, dl, figure, -%vertical-rhythm { - margin-bottom: $spacing-unit / 2; -} - -hr { - margin-top: $spacing-unit; - margin-bottom: $spacing-unit; -} - -/** - * `main` element - */ -main { - display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ -} - - - -/** - * Images - */ -img { - max-width: 100%; - vertical-align: middle; -} - - - -/** - * Figures - */ -figure > img { - display: block; -} - -figcaption { - font-size: $small-font-size; -} - - - -/** - * Lists - */ -ul, ol { - margin-left: $spacing-unit; -} - -li { - > ul, - > ol { - margin-bottom: 0; - } -} - - - -/** - * Headings - */ -h1, h2, h3, h4, h5, h6 { - font-weight: $base-font-weight; -} - - - -/** - * Links - */ -a { - color: $link-base-color; - text-decoration: none; - - &:visited { - color: $link-visited-color; - } - - &:hover { - color: $text-color; - text-decoration: underline; - } - - .social-media-list &:hover { - text-decoration: none; - - .username { - text-decoration: underline; - } - } -} - - -/** - * Blockquotes - */ -blockquote { - color: $brand-color; - border-left: 4px solid $brand-color-light; - padding-left: $spacing-unit / 2; - @include relative-font-size(1.125); - font-style: italic; - - > :last-child { - margin-bottom: 0; - } - - i, em { - font-style: normal; - } -} - - - -/** - * Code formatting - */ -pre, -code { - font-family: $code-font-family; - font-size: 0.9375em; - border: 1px solid $brand-color-light; - border-radius: 3px; - background-color: $code-background-color; -} - -code { - padding: 1px 5px; -} - -pre { - padding: 8px 12px; - overflow-x: auto; - - > code { - border: 0; - padding-right: 0; - padding-left: 0; - } -} - -.highlight { - border-radius: 3px; - background: $code-background-color; - @extend %vertical-rhythm; - - .highlighter-rouge & { - background: $code-background-color; - } -} - - - -/** - * Wrapper - */ -.wrapper { - max-width: calc(#{$content-width} - (#{$spacing-unit})); - margin-right: auto; - margin-left: auto; - padding-right: $spacing-unit / 2; - padding-left: $spacing-unit / 2; - @extend %clearfix; - - @media screen and (min-width: $on-large) { - max-width: calc(#{$content-width} - (#{$spacing-unit} * 2)); - padding-right: $spacing-unit; - padding-left: $spacing-unit; - } -} - - - -/** - * Clearfix - */ -%clearfix:after { - content: ""; - display: table; - clear: both; -} - - - -/** - * Icons - */ - -.orange { - color: #f66a0a; -} - -.grey { - color: #828282; -} - -/** - * Tables - */ -table { - margin-bottom: $spacing-unit; - width: 100%; - text-align: $table-text-align; - color: $table-text-color; - border-collapse: collapse; - border: 1px solid $table-border-color; - tr { - &:nth-child(even) { - background-color: $table-zebra-color; - } - } - th, td { - padding: ($spacing-unit / 3) ($spacing-unit / 2); - } - th { - background-color: $table-header-bg-color; - border: 1px solid $table-header-border; - } - td { - border: 1px solid $table-border-color; - } - - @include media-query($on-laptop) { - display: block; - overflow-x: auto; - -webkit-overflow-scrolling: touch; - -ms-overflow-style: -ms-autohiding-scrollbar; - } -} - -@media print { - /** - * Prevents page break from cutting through content when printing - */ - body { - display: block; - } - /** - * Replaces the top navigation menu with the project name when printing - */ - .site-header .wrapper { - display: none; - } - .site-header { - text-align: center; - } - .site-header:before { - content: "EduConnect"; - font-size: 32px; - } -} diff --git a/docs/_sass/minima/_layout.scss b/docs/_sass/minima/_layout.scss deleted file mode 100644 index ca99f981701..00000000000 --- a/docs/_sass/minima/_layout.scss +++ /dev/null @@ -1,263 +0,0 @@ -/** - * Site header - */ -.site-header { - border-top: 5px solid $brand-color-dark; - border-bottom: 1px solid $brand-color-light; - min-height: $spacing-unit * 1.865; - line-height: $base-line-height * $base-font-size * 2.25; - - // Positioning context for the mobile navigation icon - position: relative; -} - -.site-title { - @include relative-font-size(1.625); - font-weight: 300; - letter-spacing: -1px; - margin-bottom: 0; - float: left; - - @include media-query($on-palm) { - padding-right: 45px; - } - - &, - &:visited { - color: $brand-color-dark; - } -} - -.site-nav { - position: absolute; - top: 9px; - right: $spacing-unit / 2; - background-color: $background-color; - border: 1px solid $brand-color-light; - border-radius: 5px; - text-align: right; - - .nav-trigger { - display: none; - } - - .menu-icon { - float: right; - width: 36px; - height: 26px; - line-height: 0; - padding-top: 10px; - text-align: center; - - > svg path { - fill: $brand-color-dark; - } - } - - label[for="nav-trigger"] { - display: block; - float: right; - width: 36px; - height: 36px; - z-index: 2; - cursor: pointer; - } - - input ~ .trigger { - clear: both; - display: none; - } - - input:checked ~ .trigger { - display: block; - padding-bottom: 5px; - } - - .page-link { - color: $text-color; - line-height: $base-line-height; - display: block; - padding: 5px 10px; - - // Gaps between nav items, but not on the last one - &:not(:last-child) { - margin-right: 0; - } - margin-left: 20px; - } - - @media screen and (min-width: $on-medium) { - position: static; - float: right; - border: none; - background-color: inherit; - - label[for="nav-trigger"] { - display: none; - } - - .menu-icon { - display: none; - } - - input ~ .trigger { - display: block; - } - - .page-link { - display: inline; - padding: 0; - - &:not(:last-child) { - margin-right: 20px; - } - margin-left: auto; - } - } -} - - - -/** - * Page content - */ -.page-content { - padding: $spacing-unit 0; - flex: 1 0 auto; -} - -.page-heading { - @include relative-font-size(2); -} - -.post-list-heading { - @include relative-font-size(1.75); -} - -.post-list { - margin-left: 0; - list-style: none; - - > li { - margin-bottom: $spacing-unit; - } -} - -.post-meta { - font-size: $small-font-size; - color: $brand-color; -} - -.post-link { - display: block; - @include relative-font-size(1.5); -} - - - -/** - * Posts - */ -.post-header { - margin-bottom: $spacing-unit; -} - -.post-title, -.post-content h1 { - @include relative-font-size(2.625); - letter-spacing: -1px; - line-height: 1.15; - - @media screen and (min-width: $on-large) { - @include relative-font-size(2.625); - } -} - -.post-content { - margin-bottom: $spacing-unit; - - h1, h2, h3 { margin-top: $spacing-unit * 2 } - h4, h5, h6 { margin-top: $spacing-unit } - - h2 { - @include relative-font-size(1.75); - - @media screen and (min-width: $on-large) { - @include relative-font-size(2); - } - } - - h3 { - @include relative-font-size(1.375); - - @media screen and (min-width: $on-large) { - @include relative-font-size(1.625); - } - } - - h4 { - @include relative-font-size(1.25); - } - - h5 { - @include relative-font-size(1.125); - } - h6 { - @include relative-font-size(1.0625); - } -} - - -.social-media-list { - display: table; - margin: 0 auto; - li { - float: left; - margin: 5px 10px 5px 0; - &:last-of-type { margin-right: 0 } - a { - display: block; - padding: $spacing-unit / 4; - border: 1px solid $brand-color-light; - &:hover { border-color: darken($brand-color-light, 10%) } - } - } -} - - - -/** - * Pagination navbar - */ -.pagination { - margin-bottom: $spacing-unit; - @extend .social-media-list; - li { - a, div { - min-width: 41px; - text-align: center; - box-sizing: border-box; - } - div { - display: block; - padding: $spacing-unit / 4; - border: 1px solid transparent; - - &.pager-edge { - color: darken($brand-color-light, 5%); - border: 1px dashed; - } - } - } -} - - - -/** - * Grid helpers - */ -@media screen and (min-width: $on-large) { - .one-half { - width: calc(50% - (#{$spacing-unit} / 2)); - } -} diff --git a/docs/_sass/minima/custom-mixins.scss b/docs/_sass/minima/custom-mixins.scss deleted file mode 100644 index 9d4bedc1c67..00000000000 --- a/docs/_sass/minima/custom-mixins.scss +++ /dev/null @@ -1,21 +0,0 @@ -@mixin alert-variant($background, $border, $color) { - color: $color; - @include gradient-bg($background); - border-color: $border; - - .alert-link { - color: darken($color, 10%); - } -} - -@mixin gradient-bg($color, $foreground: null) { - @if $enable-gradients { - @if $foreground { - background-image: $foreground, linear-gradient(180deg, mix($body-bg, $color, 15%), $color); - } @else { - background-image: linear-gradient(180deg, mix($body-bg, $color, 15%), $color); - } - } @else { - background-color: $color; - } -} diff --git a/docs/_sass/minima/custom-styles.scss b/docs/_sass/minima/custom-styles.scss deleted file mode 100644 index 56b5d56b430..00000000000 --- a/docs/_sass/minima/custom-styles.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Placeholder to allow defining custom styles that override everything else. -// (Use `_sass/minima/custom-variables.scss` to override variable defaults) -h2, h3, h4, h5, h6 { - color: #e46c0a; -} - -// Bootstrap style alerts -.alert { - position: relative; - padding: $alert-padding-y $alert-padding-x; - margin-bottom: $alert-margin-bottom; - border: $alert-border-width solid transparent; - border-radius : $alert-border-radius; -} - -// Headings for larger alerts -.alert-heading { - // Specified to prevent conflicts of changing $headings-color - color: inherit; -} - -// Provide class for links that match alerts -.alert-link { - font-weight: $alert-link-font-weight; -} - -// Generate contextual modifier classes for colorizing the alert. - -@each $color, $value in $theme-colors { - .alert-#{$color} { - @include alert-variant(color-level($value, $alert-bg-level), color-level($value, $alert-border-level), color-level($value, $alert-color-level)); - } -} - diff --git a/docs/_sass/minima/custom-variables.scss b/docs/_sass/minima/custom-variables.scss deleted file mode 100644 index a128970cbe7..00000000000 --- a/docs/_sass/minima/custom-variables.scss +++ /dev/null @@ -1,76 +0,0 @@ -// Placeholder to allow overriding predefined variables smoothly. - -//Bootstrap's default -$white: #fff !default; -$gray-100: #f8f9fa !default; -$gray-200: #e9ecef !default; -$gray-300: #dee2e6 !default; -$gray-400: #ced4da !default; -$gray-500: #adb5bd !default; -$gray-600: #6c757d !default; -$gray-700: #495057 !default; -$gray-800: #343a40 !default; -$gray-900: #212529 !default; -$black: #000 !default; -$blue: #0d6efd !default; -$indigo: #6610f2 !default; -$purple: #6f42c1 !default; -$pink: #d63384 !default; -$red: #dc3545 !default; -$orange: #fd7e14 !default; -$yellow: #ffc107 !default; -$green: #28a745 !default; -$teal: #20c997 !default; -$cyan: #17a2b8 !default; - -$primary: $blue !default; -$secondary: $gray-600 !default; -$success: $green !default; -$info: $cyan !default; -$warning: $yellow !default; -$danger: $red !default; -$light: $gray-100 !default; -$dark: $gray-800 !default; - -$theme-colors: ( - "primary": $primary, - "secondary": $secondary, - "success": $success, - "info": $info, - "warning": $warning, - "danger": $danger, - "light": $light, - "dark": $dark -) !default; - -$theme-color-interval: 8% !default; - -$body-bg: $white !default; -$body-color: $gray-900 !default; -$body-text-align: null !default; - -$enable-gradients: true; - -// Define alert colors, border radius, and padding. -$border-radius: .25rem !default; -$border-width: 1px !default; -$font-weight-bold: 700 !default; - -$alert-padding-y: .75rem !default; -$alert-padding-x: 1.25rem !default; -$alert-margin-bottom: 1rem !default; -$alert-border-radius: $border-radius !default; -$alert-link-font-weight: $font-weight-bold !default; -$alert-border-width: $border-width !default; - -$alert-bg-level: -10 !default; -$alert-border-level: -9 !default; -$alert-color-level: 6 !default; - -// Request a color level -// scss-docs-start color-level -@function color-level($color: $primary, $level: 0) { - $color-base: if($level > 0, $black, $white); - $level: abs($level); - @return mix($color-base, $color, $level * $theme-color-interval); -} diff --git a/docs/_sass/minima/initialize.scss b/docs/_sass/minima/initialize.scss deleted file mode 100644 index 30288811151..00000000000 --- a/docs/_sass/minima/initialize.scss +++ /dev/null @@ -1,51 +0,0 @@ -@charset "utf-8"; - -// Define defaults for each variable. - -$base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Segoe UI Symbol", "Segoe UI Emoji", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif !default; -$code-font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace; -$base-font-size: 16px !default; -$base-font-weight: 400 !default; -$small-font-size: $base-font-size * 0.875 !default; -$base-line-height: 1.5 !default; - -$spacing-unit: 30px !default; - -$table-text-align: left !default; - -// Width of the content area -$content-width: 800px !default; - -$on-palm: 600px !default; -$on-laptop: 800px !default; - -$on-medium: $on-palm !default; -$on-large: $on-laptop !default; - -// Use media queries like this: -// @include media-query($on-palm) { -// .wrapper { -// padding-right: $spacing-unit / 2; -// padding-left: $spacing-unit / 2; -// } -// } -// Notice the following mixin uses max-width, in a deprecated, desktop-first -// approach, whereas media queries used elsewhere now use min-width. -@mixin media-query($device) { - @media screen and (max-width: $device) { - @content; - } -} - -@mixin relative-font-size($ratio) { - font-size: #{$ratio}rem; -} - -// Import pre-styling-overrides hook and style-partials. -@import - "minima/custom-variables", // Hook to override predefined variables. - "minima/custom-mixins", // Hook to add custom mixins. - "minima/base", // Defines element resets. - "minima/layout", // Defines structure and style based on CSS selectors. - "minima/custom-styles" // Hook to override existing styles. -; diff --git a/docs/_sass/minima/skins/classic.scss b/docs/_sass/minima/skins/classic.scss deleted file mode 100644 index 37ea9c5244c..00000000000 --- a/docs/_sass/minima/skins/classic.scss +++ /dev/null @@ -1,84 +0,0 @@ -@charset "utf-8"; - -$brand-color: #828282 !default; -$brand-color-light: lighten($brand-color, 40%) !default; -$brand-color-dark: darken($brand-color, 25%) !default; - -$text-color: #111 !default; -$background-color: #fdfdfd !default; -$code-background-color: #eef !default; - -$link-base-color: #2a7ae2 !default; -$link-visited-color: darken($link-base-color, 15%) !default; - -$table-text-color: lighten($text-color, 18%) !default; -$table-zebra-color: lighten($brand-color, 46%) !default; -$table-header-bg-color: lighten($brand-color, 43%) !default; -$table-header-border: lighten($brand-color, 36%) !default; -$table-border-color: $brand-color-light !default; - - -// Syntax highlighting styles should be adjusted appropriately for every "skin" -// ---------------------------------------------------------------------------- - -.highlight { - .c { color: #998; font-style: italic } // Comment - .err { color: #a61717; background-color: #e3d2d2 } // Error - .k { font-weight: bold } // Keyword - .o { font-weight: bold } // Operator - .cm { color: #998; font-style: italic } // Comment.Multiline - .cp { color: #999; font-weight: bold } // Comment.Preproc - .c1 { color: #998; font-style: italic } // Comment.Single - .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: #000; background-color: #fdd } // Generic.Deleted - .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific - .ge { font-style: italic } // Generic.Emph - .gr { color: #a00 } // Generic.Error - .gh { color: #999 } // Generic.Heading - .gi { color: #000; background-color: #dfd } // Generic.Inserted - .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific - .go { color: #888 } // Generic.Output - .gp { color: #555 } // Generic.Prompt - .gs { font-weight: bold } // Generic.Strong - .gu { color: #aaa } // Generic.Subheading - .gt { color: #a00 } // Generic.Traceback - .kc { font-weight: bold } // Keyword.Constant - .kd { font-weight: bold } // Keyword.Declaration - .kp { font-weight: bold } // Keyword.Pseudo - .kr { font-weight: bold } // Keyword.Reserved - .kt { color: #458; font-weight: bold } // Keyword.Type - .m { color: #099 } // Literal.Number - .s { color: #d14 } // Literal.String - .na { color: #008080 } // Name.Attribute - .nb { color: #0086B3 } // Name.Builtin - .nc { color: #458; font-weight: bold } // Name.Class - .no { color: #008080 } // Name.Constant - .ni { color: #800080 } // Name.Entity - .ne { color: #900; font-weight: bold } // Name.Exception - .nf { color: #900; font-weight: bold } // Name.Function - .nn { color: #555 } // Name.Namespace - .nt { color: #000080 } // Name.Tag - .nv { color: #008080 } // Name.Variable - .ow { font-weight: bold } // Operator.Word - .w { color: #bbb } // Text.Whitespace - .mf { color: #099 } // Literal.Number.Float - .mh { color: #099 } // Literal.Number.Hex - .mi { color: #099 } // Literal.Number.Integer - .mo { color: #099 } // Literal.Number.Oct - .sb { color: #d14 } // Literal.String.Backtick - .sc { color: #d14 } // Literal.String.Char - .sd { color: #d14 } // Literal.String.Doc - .s2 { color: #d14 } // Literal.String.Double - .se { color: #d14 } // Literal.String.Escape - .sh { color: #d14 } // Literal.String.Heredoc - .si { color: #d14 } // Literal.String.Interpol - .sx { color: #d14 } // Literal.String.Other - .sr { color: #009926 } // Literal.String.Regex - .s1 { color: #d14 } // Literal.String.Single - .ss { color: #990073 } // Literal.String.Symbol - .bp { color: #999 } // Name.Builtin.Pseudo - .vc { color: #008080 } // Name.Variable.Class - .vg { color: #008080 } // Name.Variable.Global - .vi { color: #008080 } // Name.Variable.Instance - .il { color: #099 } // Literal.Number.Integer.Long -} diff --git a/docs/_sass/minima/skins/solarized-dark.scss b/docs/_sass/minima/skins/solarized-dark.scss deleted file mode 100644 index f3b1f387de0..00000000000 --- a/docs/_sass/minima/skins/solarized-dark.scss +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8"; - -$sol-is-dark: true; -@import "minima/skins/solarized"; diff --git a/docs/_sass/minima/skins/solarized.scss b/docs/_sass/minima/skins/solarized.scss deleted file mode 100644 index 982bd7f2990..00000000000 --- a/docs/_sass/minima/skins/solarized.scss +++ /dev/null @@ -1,133 +0,0 @@ -@charset "utf-8"; - -// Solarized skin -// ============== -// Created by Sander Voerman using the Solarized -// color scheme by Ethan Schoonover . - -// This style sheet implements two options for the minima.skin setting: -// "solarized" for light mode and "solarized-dark" for dark mode. -$sol-is-dark: false !default; - - -// Color scheme -// ------------ -// The inline comments show the canonical L*a*b values for each color. - -$sol-base03: #002b36; // 15 -12 -12 -$sol-base02: #073642; // 20 -12 -12 -$sol-base01: #586e75; // 45 -07 -07 -$sol-base00: #657b83; // 50 -07 -07 -$sol-base0: #839496; // 60 -06 -03 -$sol-base1: #93a1a1; // 65 -05 -02 -$sol-base2: #eee8d5; // 92 -00 10 -$sol-base3: #fdf6e3; // 97 00 10 -$sol-yellow: #b58900; // 60 10 65 -$sol-orange: #cb4b16; // 50 50 55 -$sol-red: #dc322f; // 50 65 45 -$sol-magenta: #d33682; // 50 65 -05 -$sol-violet: #6c71c4; // 50 15 -45 -$sol-blue: #268bd2; // 55 -10 -45 -$sol-cyan: #2aa198; // 60 -35 -05 -$sol-green: #859900; // 60 -20 65 - -$sol-mono3: $sol-base3; -$sol-mono2: $sol-base2; -$sol-mono1: $sol-base1; -$sol-mono00: $sol-base00; -$sol-mono01: $sol-base01; - -@if $sol-is-dark { - $sol-mono3: $sol-base03; - $sol-mono2: $sol-base02; - $sol-mono1: $sol-base01; - $sol-mono00: $sol-base0; - $sol-mono01: $sol-base1; -} - - -// Minima color variables -// ---------------------- - -$brand-color: $sol-mono1 !default; -$brand-color-light: mix($sol-mono1, $sol-mono3) !default; -$brand-color-dark: $sol-mono00 !default; - -$text-color: $sol-mono01 !default; -$background-color: $sol-mono3 !default; -$code-background-color: $sol-mono2 !default; - -$link-base-color: $sol-blue !default; -$link-visited-color: mix($sol-blue, $sol-mono00) !default; - -$table-text-color: $sol-mono00 !default; -$table-zebra-color: mix($sol-mono2, $sol-mono3) !default; -$table-header-bg-color: $sol-mono2 !default; -$table-header-border: $sol-mono1 !default; -$table-border-color: $sol-mono1 !default; - - -// Syntax highlighting styles -// -------------------------- - -.highlight { - .c { color: $sol-mono1; font-style: italic } // Comment - .err { color: $sol-red } // Error - .k { color: $sol-mono01; font-weight: bold } // Keyword - .o { color: $sol-mono01; font-weight: bold } // Operator - .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline - .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc - .c1 { color: $sol-mono1; font-style: italic } // Comment.Single - .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special - .gd { color: $sol-red } // Generic.Deleted - .gd .x { color: $sol-red } // Generic.Deleted.Specific - .ge { color: $sol-mono00; font-style: italic } // Generic.Emph - .gr { color: $sol-red } // Generic.Error - .gh { color: $sol-mono1 } // Generic.Heading - .gi { color: $sol-green } // Generic.Inserted - .gi .x { color: $sol-green } // Generic.Inserted.Specific - .go { color: $sol-mono00 } // Generic.Output - .gp { color: $sol-mono00 } // Generic.Prompt - .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong - .gu { color: $sol-mono1 } // Generic.Subheading - .gt { color: $sol-red } // Generic.Traceback - .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant - .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration - .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo - .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved - .kt { color: $sol-violet; font-weight: bold } // Keyword.Type - .m { color: $sol-cyan } // Literal.Number - .s { color: $sol-magenta } // Literal.String - .na { color: $sol-cyan } // Name.Attribute - .nb { color: $sol-blue } // Name.Builtin - .nc { color: $sol-violet; font-weight: bold } // Name.Class - .no { color: $sol-cyan } // Name.Constant - .ni { color: $sol-violet } // Name.Entity - .ne { color: $sol-violet; font-weight: bold } // Name.Exception - .nf { color: $sol-blue; font-weight: bold } // Name.Function - .nn { color: $sol-mono00 } // Name.Namespace - .nt { color: $sol-blue } // Name.Tag - .nv { color: $sol-cyan } // Name.Variable - .ow { color: $sol-mono01; font-weight: bold } // Operator.Word - .w { color: $sol-mono1 } // Text.Whitespace - .mf { color: $sol-cyan } // Literal.Number.Float - .mh { color: $sol-cyan } // Literal.Number.Hex - .mi { color: $sol-cyan } // Literal.Number.Integer - .mo { color: $sol-cyan } // Literal.Number.Oct - .sb { color: $sol-magenta } // Literal.String.Backtick - .sc { color: $sol-magenta } // Literal.String.Char - .sd { color: $sol-magenta } // Literal.String.Doc - .s2 { color: $sol-magenta } // Literal.String.Double - .se { color: $sol-magenta } // Literal.String.Escape - .sh { color: $sol-magenta } // Literal.String.Heredoc - .si { color: $sol-magenta } // Literal.String.Interpol - .sx { color: $sol-magenta } // Literal.String.Other - .sr { color: $sol-green } // Literal.String.Regex - .s1 { color: $sol-magenta } // Literal.String.Single - .ss { color: $sol-magenta } // Literal.String.Symbol - .bp { color: $sol-mono1 } // Name.Builtin.Pseudo - .vc { color: $sol-cyan } // Name.Variable.Class - .vg { color: $sol-cyan } // Name.Variable.Global - .vi { color: $sol-cyan } // Name.Variable.Instance - .il { color: $sol-cyan } // Literal.Number.Integer.Long -} diff --git a/docs/assets/css/style.scss b/docs/assets/css/style.scss deleted file mode 100644 index b5ec6976efa..00000000000 --- a/docs/assets/css/style.scss +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Only the main Sass file needs front matter (the dashes are enough) ---- - -@import - "minima/skins/{{ site.minima.skin | default: 'classic' }}", - "minima/initialize"; - -.icon { - height: 21px; - width: 21px -} diff --git a/docs/diagrams/ArchitectureDiagram.puml b/docs/diagrams/ArchitectureDiagram.puml deleted file mode 100644 index 4c5cf58212e..00000000000 --- a/docs/diagrams/ArchitectureDiagram.puml +++ /dev/null @@ -1,33 +0,0 @@ -@startuml -!include -!include -!include -!include style.puml - -Package " "<>{ - Class UI UI_COLOR - Class Logic LOGIC_COLOR - Class Storage STORAGE_COLOR - Class Model MODEL_COLOR - Class Main #grey - Class Commons LOGIC_COLOR_T2 -} - -Class "<$user>" as User MODEL_COLOR_T2 -Class "<$documents>" as File UI_COLOR_T1 - - -UI -[#green]> Logic -UI -right[#green]-> Model -Logic -[#blue]-> Storage -Logic -down[#blue]-> Model -Main -[#grey]-> UI -Main -[#grey]-> Logic -Main -[#grey]-> Storage -Main -up[#grey]-> Model -Main -down[hidden]-> Commons - -Storage -up[STORAGE_COLOR].> Model -Storage .right[STORAGE_COLOR].>File -User ..> UI -@enduml diff --git a/docs/diagrams/ArchitectureSequenceDiagram.puml b/docs/diagrams/ArchitectureSequenceDiagram.puml deleted file mode 100644 index 48b6cc4333c..00000000000 --- a/docs/diagrams/ArchitectureSequenceDiagram.puml +++ /dev/null @@ -1,39 +0,0 @@ -@startuml -!include style.puml -skinparam ArrowFontStyle plain - -Actor User as user USER_COLOR -Participant ":UI" as ui UI_COLOR -Participant ":Logic" as logic LOGIC_COLOR -Participant ":Model" as model MODEL_COLOR -Participant ":Storage" as storage STORAGE_COLOR - -user -[USER_COLOR]> ui : "delete 1" -activate ui UI_COLOR - -ui -[UI_COLOR]> logic : execute("delete 1") -activate logic LOGIC_COLOR - -logic -[LOGIC_COLOR]> model : deletePerson(p) -activate model MODEL_COLOR - -model -[MODEL_COLOR]-> logic -deactivate model - -logic -[LOGIC_COLOR]> storage : saveAddressBook(addressBook) -activate storage STORAGE_COLOR - -storage -[STORAGE_COLOR]> storage : Save to file -activate storage STORAGE_COLOR_T1 -storage --[STORAGE_COLOR]> storage -deactivate storage - -storage --[STORAGE_COLOR]> logic -deactivate storage - -logic --[LOGIC_COLOR]> ui -deactivate logic - -ui--[UI_COLOR]> user -deactivate ui -@enduml diff --git a/docs/diagrams/BetterModelClassDiagram.puml b/docs/diagrams/BetterModelClassDiagram.puml deleted file mode 100644 index 598474a5c82..00000000000 --- a/docs/diagrams/BetterModelClassDiagram.puml +++ /dev/null @@ -1,21 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor MODEL_COLOR -skinparam classBackgroundColor MODEL_COLOR - -AddressBook *-right-> "1" UniquePersonList -AddressBook *-right-> "1" UniqueTagList -UniqueTagList -[hidden]down- UniquePersonList -UniqueTagList -[hidden]down- UniquePersonList - -UniqueTagList -right-> "*" Tag -UniquePersonList -right-> Person - -Person -up-> "*" Tag - -Person *--> Name -Person *--> Phone -Person *--> Email -Person *--> Address -@enduml diff --git a/docs/diagrams/CommitActivityDiagram.puml b/docs/diagrams/CommitActivityDiagram.puml deleted file mode 100644 index 8c0892d6a70..00000000000 --- a/docs/diagrams/CommitActivityDiagram.puml +++ /dev/null @@ -1,18 +0,0 @@ -@startuml -skin rose -skinparam ActivityFontSize 15 -skinparam ArrowFontSize 12 -start -:User executes command; - -'Since the beta syntax does not support placing the condition outside the -'diamond we place it as the true branch instead. - -if () then ([command commits AddressBook]) - :Purge redundant states; - :Save AddressBook to - addressBookStateList; -else ([else]) -endif -stop -@enduml diff --git a/docs/diagrams/ComponentManagers.puml b/docs/diagrams/ComponentManagers.puml deleted file mode 100644 index 564dd1ae32f..00000000000 --- a/docs/diagrams/ComponentManagers.puml +++ /dev/null @@ -1,31 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor LOGIC_COLOR_T4 -skinparam classBackgroundColor LOGIC_COLOR - -package Logic as LogicPackage { -Class "<>\nLogic" as Logic -Class LogicManager -} - -package Model as ModelPackage { -Class "<>\nModel" as Model -Class ModelManager -} - -package Storage as StoragePackage { -Class "<>\nStorage" as Storage -Class StorageManager -} - -Class HiddenOutside #FFFFFF -HiddenOutside ..> Logic - -LogicManager .up.|> Logic -ModelManager .up.|> Model -StorageManager .up.|> Storage - -LogicManager --> Model -LogicManager --> Storage -@enduml diff --git a/docs/diagrams/DeleteSequenceDiagram.puml b/docs/diagrams/DeleteSequenceDiagram.puml deleted file mode 100644 index 5241e79d7da..00000000000 --- a/docs/diagrams/DeleteSequenceDiagram.puml +++ /dev/null @@ -1,70 +0,0 @@ -@startuml -!include style.puml -skinparam ArrowFontStyle plain - -box Logic LOGIC_COLOR_T1 -participant ":LogicManager" as LogicManager LOGIC_COLOR -participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR -participant ":DeleteCommandParser" as DeleteCommandParser LOGIC_COLOR -participant "d:DeleteCommand" as DeleteCommand LOGIC_COLOR -participant "r:CommandResult" as CommandResult LOGIC_COLOR -end box - -box Model MODEL_COLOR_T1 -participant "m:Model" as Model MODEL_COLOR -end box - -[-> LogicManager : execute("delete 1") -activate LogicManager - -LogicManager -> AddressBookParser : parseCommand("delete 1") -activate AddressBookParser - -create DeleteCommandParser -AddressBookParser -> DeleteCommandParser -activate DeleteCommandParser - -DeleteCommandParser --> AddressBookParser -deactivate DeleteCommandParser - -AddressBookParser -> DeleteCommandParser : parse("1") -activate DeleteCommandParser - -create DeleteCommand -DeleteCommandParser -> DeleteCommand -activate DeleteCommand - -DeleteCommand --> DeleteCommandParser : -deactivate DeleteCommand - -DeleteCommandParser --> AddressBookParser : d -deactivate DeleteCommandParser -'Hidden arrow to position the destroy marker below the end of the activation bar. -DeleteCommandParser -[hidden]-> AddressBookParser -destroy DeleteCommandParser - -AddressBookParser --> LogicManager : d -deactivate AddressBookParser - -LogicManager -> DeleteCommand : execute(m) -activate DeleteCommand - -DeleteCommand -> Model : deletePerson(1) -activate Model - -Model --> DeleteCommand -deactivate Model - -create CommandResult -DeleteCommand -> CommandResult -activate CommandResult - -CommandResult --> DeleteCommand -deactivate CommandResult - -DeleteCommand --> LogicManager : r -deactivate DeleteCommand - -[<--LogicManager -deactivate LogicManager -@enduml diff --git a/docs/diagrams/LogicClassDiagram.puml b/docs/diagrams/LogicClassDiagram.puml deleted file mode 100644 index 58b4f602ce6..00000000000 --- a/docs/diagrams/LogicClassDiagram.puml +++ /dev/null @@ -1,47 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor LOGIC_COLOR_T4 -skinparam classBackgroundColor LOGIC_COLOR - -package Logic as LogicPackage { - -package "Parser Classes" as ParserClasses{ -} -Class XYZCommand -Class CommandResult -Class "{abstract}\nCommand" as Command - - -Class "<>\nLogic" as Logic -Class LogicManager -} - -package Model { -Class HiddenModel #FFFFFF -} - -package Storage { -} - -Class HiddenOutside #FFFFFF -HiddenOutside ..> Logic - -LogicManager .right.|> Logic -LogicManager -right->"1" ParserClasses -ParserClasses ..> XYZCommand : <> - -XYZCommand -up-|> Command -LogicManager .left.> Command : <> - -LogicManager --> Model -LogicManager --> Storage -Storage --[hidden] Model -Command .[hidden]up.> Storage -Command .right.> Model -note right of XYZCommand: XYZCommand = AddCommand, \nFindCommand, etc - -Logic ..> CommandResult -LogicManager .down.> CommandResult -Command .up.> CommandResult : <> -@enduml diff --git a/docs/diagrams/ModelClassDiagram.puml b/docs/diagrams/ModelClassDiagram.puml deleted file mode 100644 index 0de5673070d..00000000000 --- a/docs/diagrams/ModelClassDiagram.puml +++ /dev/null @@ -1,54 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor MODEL_COLOR -skinparam classBackgroundColor MODEL_COLOR - -Package Model as ModelPackage <>{ -Class "<>\nReadOnlyAddressBook" as ReadOnlyAddressBook -Class "<>\nReadOnlyUserPrefs" as ReadOnlyUserPrefs -Class "<>\nModel" as Model -Class AddressBook -Class ModelManager -Class UserPrefs - -Class UniquePersonList -Class Person -Class Address -Class Email -Class Name -Class Phone -Class Tag - -Class I #FFFFFF -} - -Class HiddenOutside #FFFFFF -HiddenOutside ..> Model - -AddressBook .up.|> ReadOnlyAddressBook - -ModelManager .up.|> Model -Model .right.> ReadOnlyUserPrefs -Model .left.> ReadOnlyAddressBook -ModelManager -left-> "1" AddressBook -ModelManager -right-> "1" UserPrefs -UserPrefs .up.|> ReadOnlyUserPrefs - -AddressBook *--> "1" UniquePersonList -UniquePersonList --> "~* all" Person -Person *--> Name -Person *--> Phone -Person *--> Email -Person *--> Address -Person *--> "*" Tag - -Person -[hidden]up--> I -UniquePersonList -[hidden]right-> I - -Name -[hidden]right-> Phone -Phone -[hidden]right-> Address -Address -[hidden]right-> Email - -ModelManager --> "~* filtered" Person -@enduml diff --git a/docs/diagrams/ParserClasses.puml b/docs/diagrams/ParserClasses.puml deleted file mode 100644 index ce4c5ce8c8d..00000000000 --- a/docs/diagrams/ParserClasses.puml +++ /dev/null @@ -1,38 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor LOGIC_COLOR_T4 -skinparam classBackgroundColor LOGIC_COLOR - -Class "{abstract}\nCommand" as Command -Class XYZCommand - -package "Parser classes"{ -Class "<>\nParser" as Parser -Class AddressBookParser -Class XYZCommandParser -Class CliSyntax -Class ParserUtil -Class ArgumentMultimap -Class ArgumentTokenizer -Class Prefix -} - -Class HiddenOutside #FFFFFF -HiddenOutside ..> AddressBookParser - -AddressBookParser .down.> XYZCommandParser: <> - -XYZCommandParser ..> XYZCommand : <> -AddressBookParser ..> Command : <> -XYZCommandParser .up.|> Parser -XYZCommandParser ..> ArgumentMultimap -XYZCommandParser ..> ArgumentTokenizer -ArgumentTokenizer .left.> ArgumentMultimap -XYZCommandParser ..> CliSyntax -CliSyntax ..> Prefix -XYZCommandParser ..> ParserUtil -ParserUtil .down.> Prefix -ArgumentTokenizer .down.> Prefix -XYZCommand -up-|> Command -@enduml diff --git a/docs/diagrams/StorageClassDiagram.puml b/docs/diagrams/StorageClassDiagram.puml deleted file mode 100644 index a821e06458c..00000000000 --- a/docs/diagrams/StorageClassDiagram.puml +++ /dev/null @@ -1,43 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor STORAGE_COLOR -skinparam classBackgroundColor STORAGE_COLOR - -package Storage as StoragePackage { - -package "UserPrefs Storage" #F4F6F6{ -Class "<>\nUserPrefsStorage" as UserPrefsStorage -Class JsonUserPrefsStorage -} - -Class "<>\nStorage" as Storage -Class StorageManager - -package "AddressBook Storage" #F4F6F6{ -Class "<>\nAddressBookStorage" as AddressBookStorage -Class JsonAddressBookStorage -Class JsonSerializableAddressBook -Class JsonAdaptedPerson -Class JsonAdaptedTag -} - -} - -Class HiddenOutside #FFFFFF -HiddenOutside ..> Storage - -StorageManager .up.|> Storage -StorageManager -up-> "1" UserPrefsStorage -StorageManager -up-> "1" AddressBookStorage - -Storage -left-|> UserPrefsStorage -Storage -right-|> AddressBookStorage - -JsonUserPrefsStorage .up.|> UserPrefsStorage -JsonAddressBookStorage .up.|> AddressBookStorage -JsonAddressBookStorage ..> JsonSerializableAddressBook -JsonSerializableAddressBook --> "*" JsonAdaptedPerson -JsonAdaptedPerson --> "*" JsonAdaptedTag - -@enduml diff --git a/docs/diagrams/UiClassDiagram.puml b/docs/diagrams/UiClassDiagram.puml deleted file mode 100644 index 95473d5aa19..00000000000 --- a/docs/diagrams/UiClassDiagram.puml +++ /dev/null @@ -1,60 +0,0 @@ -@startuml -!include style.puml -skinparam arrowThickness 1.1 -skinparam arrowColor UI_COLOR_T4 -skinparam classBackgroundColor UI_COLOR - -package UI <>{ -Class "<>\nUi" as Ui -Class "{abstract}\nUiPart" as UiPart -Class UiManager -Class MainWindow -Class HelpWindow -Class ResultDisplay -Class PersonListPanel -Class PersonCard -Class StatusBarFooter -Class CommandBox -} - -package Model <> { -Class HiddenModel #FFFFFF -} - -package Logic <> { -Class HiddenLogic #FFFFFF -} - -Class HiddenOutside #FFFFFF -HiddenOutside ..> Ui - -UiManager .left.|> Ui -UiManager -down-> "1" MainWindow -MainWindow *-down-> "1" CommandBox -MainWindow *-down-> "1" ResultDisplay -MainWindow *-down-> "1" PersonListPanel -MainWindow *-down-> "1" StatusBarFooter -MainWindow --> "0..1" HelpWindow - -PersonListPanel -down-> "*" PersonCard - -MainWindow -left-|> UiPart - -ResultDisplay --|> UiPart -CommandBox --|> UiPart -PersonListPanel --|> UiPart -PersonCard --|> UiPart -StatusBarFooter --|> UiPart -HelpWindow --|> UiPart - -PersonCard ..> Model -UiManager -right-> Logic -MainWindow -left-> Logic - -PersonListPanel -[hidden]left- HelpWindow -HelpWindow -[hidden]left- CommandBox -CommandBox -[hidden]left- ResultDisplay -ResultDisplay -[hidden]left- StatusBarFooter - -MainWindow -[hidden]-|> UiPart -@enduml diff --git a/docs/diagrams/UndoRedoState0.puml b/docs/diagrams/UndoRedoState0.puml deleted file mode 100644 index 43a45903ac9..00000000000 --- a/docs/diagrams/UndoRedoState0.puml +++ /dev/null @@ -1,21 +0,0 @@ -@startuml -!include style.puml -skinparam ClassFontColor #000000 -skinparam ClassBorderColor #000000 -skinparam ClassBackgroundColor #FFFFAA - -title Initial state - -package States { - class State1 as "ab0:AddressBook" - class State2 as "ab1:AddressBook" - class State3 as "ab2:AddressBook" -} -State1 -[hidden]right-> State2 -State2 -[hidden]right-> State3 -hide State2 -hide State3 - -class Pointer as "Current State" #FFFFFF -Pointer -up-> State1 -@end diff --git a/docs/diagrams/UndoRedoState1.puml b/docs/diagrams/UndoRedoState1.puml deleted file mode 100644 index 5a41e9e1651..00000000000 --- a/docs/diagrams/UndoRedoState1.puml +++ /dev/null @@ -1,23 +0,0 @@ -@startuml -!include style.puml -skinparam ClassFontColor #000000 -skinparam ClassBorderColor #000000 -skinparam ClassBackgroundColor #FFFFAA - -title After command "delete 5" - -package States <> { - class State1 as "ab0:AddressBook" - class State2 as "ab1:AddressBook" - class State3 as "ab2:AddressBook" -} - -State1 -[hidden]right-> State2 -State2 -[hidden]right-> State3 - -hide State3 - -class Pointer as "Current State" #FFFFFF - -Pointer -up-> State2 -@end diff --git a/docs/diagrams/UndoRedoState2.puml b/docs/diagrams/UndoRedoState2.puml deleted file mode 100644 index ad32fce1b0b..00000000000 --- a/docs/diagrams/UndoRedoState2.puml +++ /dev/null @@ -1,21 +0,0 @@ -@startuml -!include style.puml -skinparam ClassFontColor #000000 -skinparam ClassBorderColor #000000 -skinparam ClassBackgroundColor #FFFFAA - -title After command "add n/David" - -package States <> { - class State1 as "ab0:AddressBook" - class State2 as "ab1:AddressBook" - class State3 as "ab2:AddressBook" -} - -State1 -[hidden]right-> State2 -State2 -[hidden]right-> State3 - -class Pointer as "Current State" #FFFFFF - -Pointer -up-> State3 -@end diff --git a/docs/diagrams/UndoRedoState3.puml b/docs/diagrams/UndoRedoState3.puml deleted file mode 100644 index 9187a690036..00000000000 --- a/docs/diagrams/UndoRedoState3.puml +++ /dev/null @@ -1,21 +0,0 @@ -@startuml -!include style.puml -skinparam ClassFontColor #000000 -skinparam ClassBorderColor #000000 -skinparam ClassBackgroundColor #FFFFAA - -title After command "undo" - -package States <> { - class State1 as "ab0:AddressBook" - class State2 as "ab1:AddressBook" - class State3 as "ab2:AddressBook" -} - -State1 -[hidden]right-> State2 -State2 -[hidden]right-> State3 - -class Pointer as "Current State" #FFFFFF - -Pointer -up-> State2 -@end diff --git a/docs/diagrams/UndoRedoState4.puml b/docs/diagrams/UndoRedoState4.puml deleted file mode 100644 index 2bc631ffcd0..00000000000 --- a/docs/diagrams/UndoRedoState4.puml +++ /dev/null @@ -1,21 +0,0 @@ -@startuml -!include style.puml -skinparam ClassFontColor #000000 -skinparam ClassBorderColor #000000 -skinparam ClassBackgroundColor #FFFFAA - -title After command "list" - -package States <> { - class State1 as "ab0:AddressBook" - class State2 as "ab1:AddressBook" - class State3 as "ab2:AddressBook" -} - -State1 -[hidden]right-> State2 -State2 -[hidden]right-> State3 - -class Pointer as "Current State" #FFFFFF - -Pointer -up-> State2 -@end diff --git a/docs/diagrams/UndoRedoState5.puml b/docs/diagrams/UndoRedoState5.puml deleted file mode 100644 index e77b04104aa..00000000000 --- a/docs/diagrams/UndoRedoState5.puml +++ /dev/null @@ -1,22 +0,0 @@ -@startuml -!include style.puml -skinparam ClassFontColor #000000 -skinparam ClassBorderColor #000000 -skinparam ClassBackgroundColor #FFFFAA - -title After command "clear" - -package States <> { - class State1 as "ab0:AddressBook" - class State2 as "ab1:AddressBook" - class State3 as "ab3:AddressBook" -} - -State1 -[hidden]right-> State2 -State2 -[hidden]right-> State3 - -class Pointer as "Current State" #FFFFFF - -Pointer -up-> State3 -note right on link: State ab2 deleted. -@end diff --git a/docs/diagrams/UndoSequenceDiagram-Logic.puml b/docs/diagrams/UndoSequenceDiagram-Logic.puml deleted file mode 100644 index e57368c5159..00000000000 --- a/docs/diagrams/UndoSequenceDiagram-Logic.puml +++ /dev/null @@ -1,46 +0,0 @@ -@startuml -!include style.puml -skinparam ArrowFontStyle plain - -box Logic LOGIC_COLOR_T1 -participant ":LogicManager" as LogicManager LOGIC_COLOR -participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR -participant "u:UndoCommand" as UndoCommand LOGIC_COLOR -end box - -box Model MODEL_COLOR_T1 -participant ":Model" as Model MODEL_COLOR -end box -[-> LogicManager : execute(undo) -activate LogicManager - -LogicManager -> AddressBookParser : parseCommand(undo) -activate AddressBookParser - -create UndoCommand -AddressBookParser -> UndoCommand -activate UndoCommand - -UndoCommand --> AddressBookParser -deactivate UndoCommand - -AddressBookParser --> LogicManager : u -deactivate AddressBookParser - -LogicManager -> UndoCommand : execute() -activate UndoCommand - -UndoCommand -> Model : undoAddressBook() -activate Model - -Model --> UndoCommand -deactivate Model - -UndoCommand --> LogicManager : result -deactivate UndoCommand -UndoCommand -[hidden]-> LogicManager : result -destroy UndoCommand - -[<--LogicManager -deactivate LogicManager -@enduml diff --git a/docs/diagrams/UndoSequenceDiagram-Model.puml b/docs/diagrams/UndoSequenceDiagram-Model.puml deleted file mode 100644 index 54d83208cb8..00000000000 --- a/docs/diagrams/UndoSequenceDiagram-Model.puml +++ /dev/null @@ -1,23 +0,0 @@ -@startuml -!include style.puml -skinparam ArrowFontStyle plain - -box Model MODEL_COLOR_T1 -participant ":Model" as Model MODEL_COLOR -participant ":VersionedAddressBook" as VersionedAddressBook MODEL_COLOR -end box - -[-> Model : undoAddressBook() -activate Model - -Model -> VersionedAddressBook : undo() -activate VersionedAddressBook - -VersionedAddressBook -> VersionedAddressBook :resetData(ReadOnlyAddressBook) -VersionedAddressBook --> Model : -deactivate VersionedAddressBook - -[<-- Model -deactivate Model - -@enduml diff --git a/docs/diagrams/add-remark/ParserClass.puml b/docs/diagrams/add-remark/ParserClass.puml deleted file mode 100644 index 24d390a4023..00000000000 --- a/docs/diagrams/add-remark/ParserClass.puml +++ /dev/null @@ -1,14 +0,0 @@ -@startuml -hide circle -skinparam classAttributeIconSize 0 - -Class "<>\nParser" as Parser -Class RemarkCommandParser { - +parse(): RemarkCommand -} -Class ParserException - -RemarkCommandParser .up.|> Parser -Parser .right.> ParserException: throws > -RemarkCommandParser .right.> ParserException: throws > -@enduml diff --git a/docs/diagrams/add-remark/RemarkClass.puml b/docs/diagrams/add-remark/RemarkClass.puml deleted file mode 100644 index 019c1ecbbf1..00000000000 --- a/docs/diagrams/add-remark/RemarkClass.puml +++ /dev/null @@ -1,19 +0,0 @@ -@startuml -hide circle -skinparam classAttributeIconSize 0 - -Class "{abstract}\nCommand" as Command { - +execute(Model): CommandResult -} -Class RemarkCommand { - +COMMAND_WORD: String - +MESSAGE_USAGE: String - +MESSAGE_NOT_IMPLEMENTED_YET: String - +execute(Model): CommandResult -} -Class CommandException - -RemarkCommand -up-|> Command -Command ..> CommandException: throws > -RemarkCommand .right.> CommandException: throws > -@enduml diff --git a/docs/diagrams/style.puml b/docs/diagrams/style.puml deleted file mode 100644 index f7d7347ae84..00000000000 --- a/docs/diagrams/style.puml +++ /dev/null @@ -1,79 +0,0 @@ -/' - 'Commonly used styles and colors across diagrams. - 'Refer to https://plantuml-documentation.readthedocs.io/en/latest for a more - 'comprehensive list of skinparams. - '/ - - -'T1 through T4 are shades of the original color from lightest to darkest - -!define UI_COLOR #1D8900 -!define UI_COLOR_T1 #83E769 -!define UI_COLOR_T2 #3FC71B -!define UI_COLOR_T3 #166800 -!define UI_COLOR_T4 #0E4100 - -!define LOGIC_COLOR #3333C4 -!define LOGIC_COLOR_T1 #C8C8FA -!define LOGIC_COLOR_T2 #6A6ADC -!define LOGIC_COLOR_T3 #1616B0 -!define LOGIC_COLOR_T4 #101086 - -!define MODEL_COLOR #9D0012 -!define MODEL_COLOR_T1 #F97181 -!define MODEL_COLOR_T2 #E41F36 -!define MODEL_COLOR_T3 #7B000E -!define MODEL_COLOR_T4 #51000A - -!define STORAGE_COLOR #A38300 -!define STORAGE_COLOR_T1 #FFE374 -!define STORAGE_COLOR_T2 #EDC520 -!define STORAGE_COLOR_T3 #806600 -!define STORAGE_COLOR_T2 #544400 - -!define USER_COLOR #000000 - -skinparam Package { - BackgroundColor #FFFFFF - BorderThickness 1 - FontSize 16 -} - -skinparam Class { - FontColor #FFFFFF - FontSize 15 - BorderThickness 1 - BorderColor #FFFFFF - StereotypeFontColor #FFFFFF - FontName Arial -} - -skinparam Actor { - BorderColor USER_COLOR - Color USER_COLOR - FontName Arial -} - -skinparam Sequence { - MessageAlign center - BoxFontSize 15 - BoxPadding 0 - BoxFontColor #FFFFFF - FontName Arial -} - -skinparam Participant { - FontColor #FFFFFFF - Padding 20 -} - -skinparam ArrowFontStyle bold -skinparam MinClassWidth 50 -skinparam ParticipantPadding 10 -skinparam Shadowing false -skinparam DefaultTextAlignment center -skinparam packageStyle Rectangle - -hide footbox -hide members -hide circle diff --git a/docs/diagrams/tracing/LogicSequenceDiagram.puml b/docs/diagrams/tracing/LogicSequenceDiagram.puml deleted file mode 100644 index 42bf46d3ce8..00000000000 --- a/docs/diagrams/tracing/LogicSequenceDiagram.puml +++ /dev/null @@ -1,22 +0,0 @@ -@startuml -!include ../style.puml -skinparam ArrowFontStyle plain - -Participant ":LogicManager" as logic LOGIC_COLOR -Participant ":AddressBookParser" as abp LOGIC_COLOR -Participant ":EditCommandParser" as ecp LOGIC_COLOR -Participant "command:EditCommand" as ec LOGIC_COLOR - -[-> logic : execute -activate logic -logic -> abp ++: parseCommand(commandText) -create ecp -abp -> ecp -abp -> ecp ++: parse(arguments) -create ec -ecp -> ec ++: index, editPersonDescriptor -ec --> ecp -- -ecp --> abp --: command -abp --> logic --: command - -@enduml diff --git a/docs/images/ArchitectureDiagram.png b/docs/images/ArchitectureDiagram.png deleted file mode 100644 index cd540665053ef53e3c0eb01ec3607b02f44a3ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19887 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 diff --git a/docs/images/ArchitectureSequenceDiagram.png b/docs/images/ArchitectureSequenceDiagram.png deleted file mode 100644 index 37ad06a2803cb13da66978062b40b9555ecbd55a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15175 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 diff --git a/docs/images/BetterModelClassDiagram.png b/docs/images/BetterModelClassDiagram.png deleted file mode 100644 index 02a42e35e76b2a1b61e7feade34a0271e0640aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14116 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 diff --git a/docs/images/CommitActivityDiagram.png b/docs/images/CommitActivityDiagram.png deleted file mode 100644 index 5b464126b35fc8025f8b92e7261f5ed6287c5eae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16227 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 diff --git a/docs/images/ComponentManagers.png b/docs/images/ComponentManagers.png deleted file mode 100644 index ae52a35718a82846d19185f2e5bed573d67cfbcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17411 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

L`n{HvGzzHFon;CZ>OTfI1 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 diff --git a/docs/images/LogicStorageDIP.png b/docs/images/LogicStorageDIP.png deleted file mode 100644 index 871157f5a9c35321a8004b0017fe6a0533129e1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5808 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 TX#zhdLZYs$rBtk7`R2a>OJ+-` diff --git a/docs/images/ParserClasses.png b/docs/images/ParserClasses.png deleted file mode 100644 index 2caeeb1a067e5e2459376de1a91699a661b41855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28856 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 diff --git a/docs/images/SeEduLogo.png b/docs/images/SeEduLogo.png deleted file mode 100644 index 31ad50b6f88d4dacb43120f10081c9e9050c4855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20233 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 diff --git a/docs/images/StorageClassDiagram.png b/docs/images/StorageClassDiagram.png deleted file mode 100644 index 18fa4d0d51f03505593ab4dbadd5821491548e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29426 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�y3#e%kgElqe^sH=7 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 DN7m$8 diff --git a/docs/images/Ui.png b/docs/images/Ui.png deleted file mode 100644 index 5bd77847aa2429edac366ebe3e00650b6dd909d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14607 zcmd^mc|4SD+rLWaRx~KdHrYx-*>_ELC86w5#*$qm#x^%9#yZBn&Yd;cLiR0XXNZxV zQO3xgbqr?wuBqpKp8MI}_x=C(htG%8d7amJp2u-~kMFTuh; z^#refNzo}9nrhLI!(|gnuZS3_%0l(9G+sYo7w@BLK_T}wJv5GVX9LfQ zhJA}PsZXP!ap4zFwM};3+?$IfPWE=Zbe2#I$slf4&QM-49^p?UQ}za#kBCQp-#g(? z$&9f;Byuj&(1e4x@{yv1*gC$hA`|{D z%=*y|FPxml8@NM69}JkN{@CzooIga1&iL#NZ9+G+;FM-9x27j=7h5*e$wVnlq}dl5 znwzw#A}?K(;eF>IR^I)+#(t1eO4Y*A;admZAYvtR)4^-~#wJZ9y<5$PIZ6t+<=Pjyvfm?H1?D&bgo531S&19K5=2D_7YcdlO^nd48C~qP|jNV?zuY8 zo*l{OoX2SBi&k-rTQ`~gXyu73$w>^J*!5;gm==z*ojgNn%WMhST5n#$l#v$NW19|= zo5^)GN?y1Y(MjIJ?{$)Cl!-sI+Md+&-HmeTD~C44LQ8V^H4=sD`W{3_e^PcnX79mI zLqp%hZd*fd)359-9b&oD3lCgx*K+e+O}E;S6bu*+PTBkxUACWEu@OeJ3OIUgeL=ym zO6#kjp2wIjEl1Z0>C`q(OsvtDF{DiPc55^Z4cB)D&x`pv&6{=(2@IR%#Ehd+_`ZmB z!@SA*UZ^aa`_bpJpnbIhEBIvwNO=0OnN3=wwoz0*wv*~e&p z*HcHfkSAN3HePWCtt+pSJ{7^2=XfbZ)|rjVyw?;X!8A0FIQhD8UHnA z$e+UiNc>I(JSu?DfM}^k0Q~YNcKjUn*yrow00tYv|D5;}X{Zx#Qo-gI$N+2n0w7?G zN3wif$t{QTqfKkx{<~W^zvYrqORwmb6ErltdbGl##O`P%5BaSSysr3 zPmeS?qQK-2_izZ{ns$w7#}O7#U{|b?ckMNiC9&rLDPqq<`Y&7zAJ1fv2;BP72k5(7 zb0{4R%}OOh1*%8kgTZnr@dieRVM)1 zQ73@Bq z)yC5Edv#GiZ;9^wSCMn$eoM zN{Gw9m$_A0J=yU({fY6Yk5U?=r7KFGTjF{4SG6sejLb}7mt1a{ga0l^gIlqd%GWOM z3o1^=w5bbt&KZvSAn3tyns)*qeD$P^lz-tWc<7UHT%Veu0y)-U5rTUNV3x6}u zRk)*$Y|e_*KyECLa!EId1F(E82g9&Hvme4gxPd# zPdD&?lBy(xxWH*0#nrOZC4#v3nPsJS?A~W|J4?;6($ILk&^kBeOo^{lH_RU7%F`6+GP;RQ( zI~9;8Ur1XU=Ji4d*R-$2O7VG5{8O&F50pCaBsXL;(R5s9z!JH8d}JZ$+F6KDDQ@-z zhK~5Kq^pp3Xt|Mt=JzI6fDrxE?0;5Fs?PpzF!)Xtz)-;C`ogRL>v%Wd|8Gk@!clGJ z_lIg!GboS_`OXGdd%S{xJxw z`R_>kr@>O^^8rTjUm*M!GXJE8|1j{s!}U)T|EDYXg$BRI|AP8dYyJOxa+eT4per9T zTr8+U9_w&p`8NrDkkI@;s=+@i;oqgJj!XsNi@kzk1ax?8HO`_0ghP-5Ismi3q=VvP z&_P*#WY`=^Zr*O(>i5T{&ukOaN#!or+!0^_9ZxMjZNx=)p4W|nz%$+42(aFf7M7jw zZ-2OF{e2NO051Pr*>*q+*;`t>S+|ho|D&~Rr4@%Mvi73X@c6HEvtAbS`@~7kLkVag z0UxD%?~0zMV+y-lzkZg|cy9D+1lWL5;MO22ll1-G@wSf~w}4$nfD7b9hX1&CaqlI+ zcEacP-zUcy4I_KzlWlrAR6SO!{2DL5!s>T8~(_)$`a?^g!Hp_}rD`Jckl@4Ra| zaYNo~7{y-tj^P%H4YJ#I^A7j0X|YBu6t`bpBmHt4luH{P?>xM!N7Tek4$`KX2jNZ* zB~RHV>)sdV)7HD2`10VsHt^(g#gO6Zmj0nD(SbUr1Vv73A}jP8(_^n5#Ux%I19>hy z^pSoDh6>6)ws%tfMFwx;VkaiR;-2&16|PwZda zJ>7PiE(U=*xIcKh?bq`F6Iqmh9qO1P{8nZa^K4k*70cplF007{1c_ry9f?4t>*SN4 z-3Pq@lxC%cL1NeA9Rn>{uZ~0+^NYABoVLi%>XRRJreRxfK`e<9^zi3I(|kbHB7prF z0??z4$_4ISK;ta%ufGja^{&e*2E6dlch_!Rbs=+fHGe*8zLBD$jZ&%w;a7Ug#^(>8 zUVUj96y3s%5?}^+vM4EMX+89BYWr(ld@BOX&Kv0DEnL%yORoI5!>s&t6Hi7@J^N@X zygDdOJz)eG3&ImDnp?Do&jMRvgPe~6i;(8naPTM6%1S|S*h7gnU2*MIb~9XoP~y(? zQWj^uVOIUoU=>5fL@bI(-9HGqP$D@4#2><7x}ceO^Z*)?6{%6+>Jp=4!IS?JRIL7hl$O|o!x5I8dbbY zwHFPfo)%I_vyTHZ(rGg?!}9ZOglMoxCI{zbuWgX62RL6?3orpdC)8=juiJU=Ob0Vm z$gH3Wa%AF7sm82vHdcuL?>9}gOh8iiY2^<#o$ubJTv^y5LQweDXs|=3&)4zfCV0(O zr`@{vui;}c|4B$anA2*~SgPj%{wk z42Z&=cFoAq7{uPV?d1{+<0)!=W8*p~yo5S(s6P4Zy~({pg=>Y`nlHL&J7bg$SNw%~+@wQJ zC&|~ACmE~h$M8cPF6*G^v)Ki-UetS0VXFI&STKm4uznIT%p!=lNw16-=*~-HH2l=s z9e?@2AVr9^Ef(f~XS!?pT&UeH=j}`KAql+n`dTP~WYG}I=k1C5S#kyo!GuwA?VYvq z3(F@9$8FyAwMMfxfkSg{0SKtWr;TMEeCFO}F&G@zO;7lI-IOrfp|p+dJLx!d3P8_l zD`f3_?hG&IrAIbbp9my+?)lFg%xFsvG7crn*FLooia@*(&=Dh9A`iJ@p6uM#y@I$z zXV<}}t@I@)b@v8!HD6QhW`3Xj72tIoR7CzOnEq#k1REtn*ETEdMF<`0?Cf^?38ItGMR{BF(bxK(^vMB*8 zzGE1Ad&bKAvz{`e_hsNDkD7xr)MNu}sj*l4!g^z+ymxbyr2fO1tAe8%u%%0w6YKo0 zeMiDhG)u`6Zag#kz!3qef~PBv1y_O6Oclh8y$d6UG~&-cwaua#gd^OO21+goiyImp zoX*B&uNg_`P0tiZn-H(9CozA~LgpLm6=;i+`Wx0F#DZISLK<%nS@fQ%wmoo4qKmS| zJi|TMzLl8SdkIqkkGoGegkIr&N9joaO^Wdh)#h9y!F9)+`LrLN^vRyPl+>;4JolRy z*-4yrxdneZ!D4>TkVo{{eertzrDO`jjlhCiZjj!{dN16u&jEu24(_*1*;0y>YoFSq z^#V%m17{bj_IoU(=Mz4EwnTI7ER|Ksc`4<+ddHp0abvmDxedwHIL<)zfg zkq&>4xjqKNUGdA&Y$?{nxHmedy-$4u1jw=SCR}^)8R$#V#brjBIhBp<#n!h59lu^m zu|iIn5*Q=~xH=|s+so5ePZoyZ^PYJvo8nw6v|H}GZ-<=;D!?5TAC2YzKr+ z_O2FE=~y1R+agFh6qMU?&wI-09eZvngM`ct!O~c(vw-OCs?jcLDL8#%-8wybugZl+0=!Y6#33-I-F>GQp9{} zqn@ncYD~|ZGc>Wg(rU9Wk)WH#cnk0hr9ilATvBIJ>G%Cr?66FQjPDH%DI5qZ>+2o< zI`yO3fjpgi!yAY7ctNkdG>XzLUl|^hS3BicK$APqOj}+s8 zeLSq1scP6U`2A4H7kd?Oj^V#NCY4W7otWWIrq*>=6X|O9I>?AsgE&YQJ}9dG=?%@^ z8MyO&^`1zF|Mb1rV6=tIKb|;A>}B`@1KnhH$TyCK4efO<$mYiqObGu@ISvEu-AY?0 zdyRM{Ybq_}NG*ADG!jmIE5E5z@>t&FA+w;Wa20IZ*Sd*NxIj9!trf#l(n-*8gNB)+ z%N7H>K>}IQLt!Y2!7_|{ns5!k2$s>7BzZ4K8PYX~;+Ad< zxcru`=p~=9(_%7{CS`>KHlW->SDpupy!$+gv95~;zJP1Tw?=^VDo3@Dt?g#IoR%TC zPFD?!?)-Q%dvIc5@g#zQC76GvY4OKbq3_$G?u z0()i83h9Xqva-EX{XIwR%$ceeln)g*2mw-FkbQz4OtIO?Jm@LJY9( zLm}At+bf^-N5ge4?Wn`Vv}YvFKl{0%w3xK@^NxJl&DQy^exHh17{xs6rF^jed>KcQ zI1h0mVJjtiDS2;dckJK!mFtskeCx_+0`FKQ5-6GVYR%6`K^XzNLB4NVfc%Kg<{$c6 z(-AP4@4IO^cO>U+w9Xx;Dz{2F7>bqHEdyo%poawssG6w#WG__8_aC+T=O9swwr+NZ zJx-uIwD>=%{(pb+ui=c@hlaK0h0Eg2zH_{ReZ1#&P`zg%Gfzq9R0H-?hw4q(o#$Gf zuf$z>ZTj1__O(_9&ke!kpasNwlBcdC=G+)UAs(=|JJQ`%4`T_iVEbluB)ipKI_~HL zJuxWK>Z;k>v?7zOc*;3IHWfu60s5Cir)8CC8P$L&rKWMtKW ztCYn=w@3K3Ddil6-I-$4P0;iD)w&d4`opb`EQwyFf36F~Wz|+V0BkpQDeROvp&%b31=XDIM46|3m(1jG+LYVO zJ4h3w@@s(kJqHqat2SyZtXKo*@WlI%S^JmyE=jMlj3p8z!7>nO4O10eVb6>N_qD)XIW+Gm^&itZw!Q; z`?>5cU`ixb>E|voAyO~#)h#d@XHhQ^AbH7V6rF%{mXM>7@|qP|+Yt>*w&e#{u*TWm z;Wz*xe?}d@NY#G`MaFj+HkTsB14-`i?+ZBc*CzKuhr-nv5*zCdm2{_m6>r>9U5Pw2 z5UrXvLfaIpP(upIDJ@b?{iw>z7Ej>*_w_Q>=)E?CM)oT}?E$}POd z>_WoQj~F+pQXJ41V!%aBjCG@5m)sj`%aPxceD{OhGZfyg7%^HZw`0+@m)3W`na8)V z2<=m%y7fU}#aV%QC|uAV=W7iI%=`CMqzjAJtAmz;70Td4(TKL6FCRCjbqu>|oVH{H zc`TS#O#4zSBq7l7_p#41WjmV1-2QJ@c_YE|D+PSLg(o`ec>#`X77cRVuoDeQh%UIB zSzWwZZJhdAAr^>vL@oo@Vi5rr5#2CvX*XvKylSP+<;dUV$KF*K6L#jIuz0B;Vv1XW z1v1ibGaH+igv~=@G>~!uq8`OQ@x{+Q@s?GW$fv)ME~{1Q945vCJ`u|T**8Nklj+kV z!6yQFygv)PEmsERB0yf6$er?(fW%+Q`z1JKXE2Pp>}6=`i5nsZE>8ye6WZSOfBvJx zuYqU1v~euOUNb-0?M6uPGkcdlg+N-4Vy}Z^0Bit?{}5|1s-?EXPL}E)l3G&38Z4_g z$1Cdx90XTgc_#yr)?1B2l!|QKY*>7=Y$Qd6|i3Bu=z z2Rb4y>RD_5%=u*YGZ=0{fb0hEaKb&c4`Utt*7f2Q+HEhn>?lk0s#h8?Ee_MK?c?69 zSTZ^Guf-w+x=-?Tjf@vE7*6b!ar+BQP}~ES%Tdg9vN3ky@3;)TKIQMO#9mcQ9y4I> zE(0Pxz_l{ahH_qxd25g(kl5T{L&%z+w(rsu2M*oK3(*B%afPqq-$-89EmEz0`UA;j zl(vzew>o}$e3%X85C$Zn@*=>n>?e-vEgL1B*$1z2axyhgk6K%bayketM6+}06%cHx z(Wds(!=S3(&s^TyQIxk3KX>n#!!>sL#F_INK=3CJa$07${HaT|mZ}->Ed6?Bx1{M- zlRR)MFh1?R`fz&hDAyI<6@z%lw$(Pjq9n2SR1WNlwo%9-5Kp6s0K)twh4!xj+n5YURBr;o#MKsLXU3YTDrRLWR+XU%#(RGN3{lJUlLL5F7> zBRq*a8l3mT@RMh&`%$06T(>tFeUHM{PL*?cd*~AX`es>GX|-G+8(?+~+>oVj9_%gw zev28P+?7N6QQrDTbMeDltRuJO15dQD^L0JKq#uG3ulcWGpBDuo4@J5#hdc;yo(i+d zwnw2;p#!-xbwU4$OZn?fW75l{CWyzqcw2wu6;;xr2N`q<^# z{fri|Ub`XPq?t|Ck9voWU15w9IcBoh-NZ+1{jMw;(<69}&!|IJ*e_ljC5{WEgFSu|}*_|u` zuU}Msjo3+|m(-nsXF;i?VwC}voD2kSWM-oJs0Kyc-)-=~`!OBAcCmph$WLguyNsW% zJ$PPYTty#qAdZFk$2=JnlL1;JUR78qFXlUqZ8zhkkM}Z#WaPkCv|7v)@+_Fi9Z5M5mW%b??)&vHwCGa}C0KBOm zl&cFHK7r%HrQpVDI;dVk}o_KeDaiovS=+!*+l^;XA3g-j-G)y~DDo2s7W zg%@Sc*uMCfFUc?VXvQiwQ`=-PZ}1r@ftNp|ZG55dvE_@_6ZDE7=#Gvr@7*SW4ayO! zuk&pN<%bV>(&N(h6q8l8Bf$RU>;kfm@*#baVdX(Bu~6ABj6+1VVU{!o2`}`Ox^b8v zk6J0o^lYK>nNSfLqMrBZ9Ch)oL+L1~&z7n7Z>~J=1?3VFQ=7mB_bGCrAlu?sWQ_}b zf?J0hQj&N0`R*K^l1_dC)EcM460G9^R14$N##OgpKk6%sg|2?<0}3Q#j4WpYW=xl_ z>tilYRPJ*(;arPR&?YcedJ0IW@j~bpLWW0_(bPpOKT-IiG?0|()<|oo6#7^BM=$mf zia?-*<(Igj`U<$trZ0>v)^`qG;R*Uv=990K5U=YpUmpzwswSZs2ey>bE=8pt;HzPN zVt^`py}Kf6h*U)Of{9nABc{FGL;O@|D)gd>)bCGX4#n(Ap(fxDE~qb>B8$y}|3ytV-fR`{o!I^bV*h^2@EoX{TsM$jKvrI9S zZ@#W^#@^hKrLqW#boZ*11-jp)sdVEX)5QHynSnnR7YXShFm&%oiW&p#GM3=-)^_Ms*VHIS8R>$}O82G`A z4$3dZ#xbv;SAtqQ3KBaTNP~0aYypgu2TTuXy2#IS)+$*MQ8h)UZ$QE9lnH9Je}ipR z3FT#snf4;MJH+l+&P=M~`r5uc>G#CnCeCX-Q8vyHr~@ELGa^5(U&O!NlheDTqH)Tk zIG*J;T!XgT74BH)CBFmv1EWiflL3+tXSgtYu1|;dvsE=3!}Sx`?J&JLQbk|dmg_%_ zy^LUx@NM^`d@t*med|Aetxk8t&!*cSI1%~go%cE9eFqF`gDg=ELre$N4I@rMouTOD zsC9mAWq;Otx)wakXz4`(boNNgn2*5eQX|zpzm;3_i7yUBjNutDX`3*i_%qEyI-aNa zwWUa;jju2ln`ZG+J&_wx_j^WzBX#KHC<+qiND7VmJof$UJ*A8h161=#d(JD>Ji zC4yndy1ZH3!R0otlS)3Bjm5Q}`ECc&r2|o5{J3oW;IVs5!u}l%&=WVLJ@CP?7chkf zQJL9mW=pJ~%a@~G`a_mp_JC|%>N{q?d0QtbFtB{-i@#BMw@Ar`!&A$jn4CGL_p zL7k^PT<08YR|ku`XLZ!wscK+_SG3tT0xGj|O8Ud!3!VWb*K)=OKHtksGyGPZ?$C1s zOr-9x3H+2%)2(HWDW>H?!r+;+}Xl=0-_c(1C#B)H=} z<6s1`{c&qPGhHN!UmGsHnREpLun(RDh6;8UA@}~Nx|#En`gLOlFKMW(#|30-bH07X z0GJX1?q!8+=7<9-2q^nM=P>>f$Wb-fmdMv-ws6R$gHr1HRWJCTNX^0Xb%lWNK=sHu-TXw`N6{y)1zwEiw`a%)*OHy3bIL!bxZ2bYOmQrJae(Wsc}h%TWYt)&)!#a9LRl6(3CR;PA{c zcv)^0u1_3so@wRjPkNoPK`UeY^J8f|`yDE=v2Ej9wT9DKKD`hDciuY>p{;_Wwl3iO z0b4tCZ8gbAtBvE@QrBP(6zvw7V^4i$nL6@i%V&LFQwwZ3JH|s_zFIxLStKt>UIst7 ztv_6ootZVxXviGP?J1XX8984W`{iw+8l{}aPz38fpfUeraJzY!I~T}RsKkH=Cq!i| zYzWu2aHcV5i0b}R1rb6a!;%CR&r|@Yz4lCBT#OU~Dnf)GmcbQGXiLNA-y?e*%6PAu z3|%-2WXb&?=P5SI`ap-xvjYpyB_gGDSK58?6QuN0AH&dTj1=@Hz}w49BlmJc%X2t< zd-x$(+0kuwnBQR}6}k%Qz>$IFSzZ9Z(-u1ZfnaJl3nA#3Tck3giZ(`SnnV?@3za7R z43cD~YpmnjW^?-iqm#Y&;1No2{t?8RfIAKFw^p zwy9p={8Wv}0em<~um-Hbv;#&U1Jb6bmLQovlo|4J6|eGAhq&b@)R@Y&vzn zaioNP6OR(;wu=U1?!;i(AT~lSD?-#|-h*tt{}2%JaOpY^0P_iuZJ;ku36V)yemc^UJA!B)ts!m?G< zsFv%1M}pIueNNx{5TO+xN7Zdx+HT1QT3Pq0uLSqQWNRwZ~R9_^Iq_4#cBfG zU%d?m_R*lwFj@b*8JU3i9?%M(fyXdW^S%#3WTv_~JYXSp@a)`(v64oMp2A~-VNsMH zHn5tccx!$1uO|wdnDi{a*PIp#<$~->^frWsG4F=-DJklpridVXg-B_@W*cH+%b>tc z9sH*9#y%~Q8EA1Md6REw0g#h+s|VppNs$AlTcQ@<49+B<^#G7FP+Xgd9(KO#coP`& zRgY#VUeAkKgH!?u=b3FO2^$9d0;ZNaKL?v={2PwGg}F0v_oIAv@qS-v^rV8Y3GV2APWW*=OEy?&IcB2Jq~7IDY3WWuBmQ*Ix}&F;7JF)M`l=u zt^23PC763&Yh-`O7OKozg+#e~>UWrNCXc6^-5Refw5W98?tSCx%+tW5m|KZV_8K8{>z%?Luj5&!g&IJPNbEy|@jJwcs zSnAfmxG|>K1R30(7blnN^BF^cT`6Epb_ohnlXEMQx5Jmu2l4=AHneN}C){ku;`Kpm z^ggxJ*J-_^lWtG|VvacwttFIq>x#Tp*SrVrVkMe}`H zc~dtRD=7E*mjpNz%?0t)>-eqkp*SWB1j)aBA>%g%Zpi*qBygC=*^5Ep!6k^C{la3s z-HB2w+@ZX$8!g_Z!82Oe1%OV^ zgJ&|6j1nVfu3v!cM@rT{Rk(ximI{?r>bMG9kK^Cjnt8VOL&*_pPwNOwF1#*TP>B@S z2|2wTqRy!_a@Or?$hLKOj*;zkKucC67edu+1DoCL`~+n@eYv8TH9iW>f|kFg#pzMAc*=|>VxyT4H*yqO4aXwhek5jsGt z&(WO%Fk4_IV3%xTN)b}3R~`aH+LKocd1$*agdg?rz<&L-llpyditwOwbF%>8HYUpN z%xLmpD6OD1U$M6;eTwx8o{iylS~f@fKXy#pRkHPiGGHXxCCixzL9eZe$~XaCdCb+S z@=s&l7XoY#9$i7iC;6nmm2oH>z0PxL{nQnK?)g}7xyo%}vtzV1(`2 zGOw#k*gF9cmS2L%GZ`!^b ziTdS0ilDU!0VWOCVfmiBd0Na25jOy&?hZW%NrRmR%+Zm%rine*dPe!U7SG-r{%eC7 z#8tm-orKlA!?YJ^FUmcDmZ60%YP_b&3*H9&x(2ek{F*f`y$&2m+r7oJX^CuQK)IWz zI*4g!J(ai+>jYPW1%7|UnI>GM=dP8-#uB!GxJdq4u&b2Xj7lAQjV_J5T$OMFSOM1i z=rgs}Lcbi7qLgvtMk^l1cVHdx)?KFdHU1Ahu>aa$s(21)Ql)twZ3M!f z1Ah5GeH`$6AR9!i@yEw7-k?2(+{7E4RzPxK>=Fj`MUhDa@-($84^~{SN_LZ!}@t(D`z1S;rGn9 z5wE-=LAm!(ZO2_3fzK5_NB~4ZrdH~QzVgoSk$Ij}(I7r~ItxxA)stfs*REhztts=? zBfP!4n{G3PR>QlsF5(4GzG;YEuD14>_BJq=7XY%cfllS~-fSqJ$kNO!l1oO+h@7R) z*ywT#quIVypgrk$3$bZ^J|jW=mQir|@#RZ)==y0nCYnd%eA=uaT`$wL0S3Xmd65#R zt6o|2{?ZdS-oWj_di}fC*G==9o1uxVYr(Cay2jxnH8R~*gWN^>cF>Wc{4jhkckwH+lw|oGJK?-w7E75%khIw&Ow=;Uu)M`6S;2uXzSSR)JV)*;PZo6 zP2|UE9~^hIk7V#Omsx(HxTrI>cr)tf21^!XGaImdv5H+7i*PYX^1NI%@Np9AgD1-pf7hdvbc`-4vtwOsKR+bEha=~JJfV#xKb>M)wQ8(z+ZY6B zJPMho0PR zGK$n&IZ5+qT@yLg7%ffGo0K18L`@##cSqUK_nHBKaK7HXEB*fP9fiVplWN(JVc6Bs zz*~B*UMGPD>kmM0T%Dj>$4Q$Q4J==W+tWvq3ptB<;h*Sx7wK)jK`y433|zoO%in|k@=RrqMBsH`6gb#_qedl7xUiEZePPsxs%ufo#oO6nU|>tMv<8=!TX zDr?udbjK`G)=;hEZVoT`iPRes-Qb1rLX9tvU&_665iUy?lJt4MJ&#|la*KOJw=6kU zb{2bYKmEnBndh11u&XZ5%m# RAXge19gVx{rMDi1{6Bg4z)AoB diff --git a/docs/images/UiClassDiagram.png b/docs/images/UiClassDiagram.png deleted file mode 100644 index 11f06d686714cf02d88c4b32879bb71b11f56e13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48363 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 diff --git a/docs/images/UndoRedoState0.png b/docs/images/UndoRedoState0.png deleted file mode 100644 index c5f91b5853370c1d6a8b9f5f9a9724e4a4a2c429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6619 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 diff --git a/docs/images/UndoRedoState2.png b/docs/images/UndoRedoState2.png deleted file mode 100644 index 20853694e0338a708b62ce3a20c72bff00c0b8e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7855 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 diff --git a/docs/images/UndoRedoState3.png b/docs/images/UndoRedoState3.png deleted file mode 100644 index 1a9551b31bea8ffedd9db1094f06ef6b74431fe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7588 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 E2LvS7wEzGB diff --git a/docs/images/UndoRedoState4.png b/docs/images/UndoRedoState4.png deleted file mode 100644 index 46dfae78c94886758c6d6c3c525db41b361d14e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7605 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 diff --git a/docs/images/UndoRedoState5.png b/docs/images/UndoRedoState5.png deleted file mode 100644 index f45889b5fdff0652cf017fd906297d229e49c8fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9427 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 diff --git a/docs/images/UndoSequenceDiagram-Logic.png b/docs/images/UndoSequenceDiagram-Logic.png deleted file mode 100644 index 78e95214294dbaa1e51015c8466b7738ddf6d886..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18099 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 diff --git a/docs/images/agenthagu.png b/docs/images/agenthagu.png deleted file mode 100644 index c8fee222c4104f974759d55da9387e798a75d25c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31227 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 diff --git a/docs/images/arnaxx54.png b/docs/images/arnaxx54.png deleted file mode 100644 index 76e5b2cbbee072a84340ae1c91ea55b6dafb1b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126309 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 ST{r%cb^HF)_kX?g*Z&5^8 diff --git a/docs/images/findAlexDavidResult.png b/docs/images/findAlexDavidResult.png deleted file mode 100644 index 235da1c273ebc2117b862aee21de72a412008be7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19640 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 diff --git a/docs/images/github-icon.png b/docs/images/github-icon.png deleted file mode 100755 index 8b25551a97921681334176ee143b41510a117d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmaJ?X;2eq7*4oFu!ne{XxAht2qc?8LXr|_LPCfTpaBK7K$c{I0Ld=NLIOeuC;@2) zZ$K%a)k+m-s0>xHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap diff --git a/docs/images/helpMessage.png b/docs/images/helpMessage.png deleted file mode 100644 index b1f70470137ec75b2bfe4d29458114d1aa75dbcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8435 zcmb7qdpy(MAHV8TsYFO2mt0D6x3L(OTgq)A28?#m+_vAW45i(}0 z<$lX;?!?$Im*437`~Cm>XOH)}z0T`(&g;C+^E_XReW@jUl=1_p+U5AJIiGBBL_ zLjMkBJW2m$4&7d6V7T7!KtuIW!0^i0x#v8_FJjge8-kNY0SZ4(2n(Ii!1N#)PV(Jn zIPE)RoWN7AVRbjj%KvoQR;!!bt9nMs^AXEv#`4c8zEPaL!tBg1tfaGE3PGV_G3CxmeQtv(LyzV{y|9dc)mB#XV4F@rA2Wf&01qYYppzuAWTv`iJm> z@U3*SmSzpBPq1|gJX{TShF<+;nV>|5NY$#7->uAz>;0?CCG3?XmyoYY4tw#Tx#+zv zeNrbU*pyudo}w3;=|lDfz(A?T_0#**ONbNnIw=q^To+kqJE^Y*pck)CMUu{*!_mK< zL%=|OQY2~Tf?wF5!bm52)z|KexT~zk!))|n2eX=sV3Jh8OTv+suLjY9<`}gq7xM+5 zVQGoB>Tpx>ZbLau)AX$J_Nj()m%gw{dbhhWqlCSmhU!&zoWaA)s{vJR`xkO-hK6ej z0baMvGHa`Yn(B%wsS-r?3s8hI^;JPzK~hOYNeM;g$mVxmYUES-QKTl?u=Otan^xZ7 zF1CEP{CAdmXn~zmo&oX@c%xj*D}U|PgR{NnvhZ~;c5^5EL*trZDIWUp*T$}}u${iL z!z%O&6~D!MKWSyvx9u}xAKG=sUXC1Jpzw2NMyLU@-Mi3D!s!dM^@Xj_hdobAQ6qO; zwGOt$jrW&b+fyjZ0^;Nfjn@ul5y6X-8g*O+cih1AC44p>4 z{a!<@Sne->>$Mgmo-Mmg>hVHmqQ*8?^WnZ$6@C}#!WabNm~g?=nz6$l{S(!TyfLGl z#fr76jq_Hi5T77&R?wUzmq`X(Cvp74PKDbrf54(G6g32S))wSO9(OzR?j1=|iC90{ z<&R$Nkxp&W{k6@_ix9u2p&^)JXpjCP^5^9iyY`;cByM{VNAQipUl|2vzA|&7!Psx= z9b44pFke$|X#tCcWN}?9?{S&w&P1*a)18s@#SO63q0~}RRf)+@x^&Hvdaw6;J!BHD zghI)9QCwVBR)(%?03>C6z^&HFnt{X%B*cs+Sw zoL>y0r#_Gx>iza|qxY>kYMVr9V=oGd;*&kLTeS*c#en&p@(Ew1>dA+SWcllGt&83D z4wEl*@TkoD-<6jHjt-bZVk@CE(s4@rrc?eaLauH>*yb8knV`5}OSJ`6A+wM?%j1G= z2PhZO0^V5TEnfIyv+n|s_8=H*8a`f2NpC**$um^CU%Q^;*|hpQcDhLj$au6#X72$& zv4gJq)>t!9K_GSWCWH!Yv1kb`c(Vd90f;{C%Pq~-6^nMs_6XuLs@NYpjayR=OmGwp z4+8{}U-FJnuDQxvfJ5;aj)|tjYqXJ!HfLQ*Y0S|Ay_R!TuM)&|rbBzQS<#phaNrQ+ zzz$AJa|czWMsR>3RAD`^j0MHsst>3)&{vWH-TgY{8r|{M-L%~53h%JMYNvbyL}K(H{*B0PaZ`2UYce4_tML(2o}E^ z5btR~BTJ&`Z+8&f6T7@9pR3x_z?(6KLinw7O-lt+|Fbe8MsNLvD^nrFvGhkkJ=_PU zm=Pk6X#&0pj>oK-O_@Qf346oT3|!N0(TkxA&X=M{`8t^@`Idtaots`-3r+O6@iEPS z50Rcb`hO?(q3ri1E>ZoGyA!Ndmt}%zx_!)88Dsx2y6<<>ov$-l*W>;jKxuf{8bzy- zLRE}4>w6@34FRyi#VL39#rx$_#~t&wG|u57^5*v1HPIMpfvYnf^iW+Qxc?^R{Afby zNk*J@`aMUcS3C$X%U0QT>omCGW+794)yVw{~YBGzc9+V<4cB_K*5nRYkuoik9%pcb=}t=55Vfti8n5^QAQe2{ITYS`L=zy3%cv ziz6uQ1tA)PQ%pm)T2NzhQK0w=%NCC`68A0ds{nNpG&9cQ0#7N@eb}{go(b1R zlR7yZMB6=Bd80S6U3bcAA!sbI8=*o#mg>QNd+h!BUWbdz$@olx7ByNBy$Ywz2H1xl zJr!|pe65HJY23xe5iOW=hQ-YvL^e7{7CL1&I!oW7$B*B|2Al{-S+5ÐxTGMs?~ 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 diff --git a/docs/images/nihalramesh12629.png b/docs/images/nihalramesh12629.png deleted file mode 100644 index 244d40dc04ff410d9c9221bb34360f8bff8422a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121376 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

    TM# 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 diff --git a/docs/images/request_access.png b/docs/images/request_access.png deleted file mode 100644 index 12e8a81bd28f63974b7467310b97ba018fbb6050..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11701 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 Sn$Lfsr*cxtlGWlSq5lWsFD7sR diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 8a6412a9a04..00000000000 --- a/docs/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: page -title: EduConnect ---- - -[![Java CI](https://github.com/AY2425S1-CS2103T-F12-2/tp/actions/workflows/gradle.yml/badge.svg?branch=master)](https://github.com/AY2425S1-CS2103T-F12-2/tp/actions) -[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F12-2/team-repo/branch/master/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/AY2425S1-CS2103T-F12-2/team-repo) - -![Ui](images/Ui.png) - -**EduConnect is a desktop application for designed for teachers to effectively manage contact details of their students.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). - -* If you are interested in using EduConnect, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start). -* If you are interested about developing EduConnect, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. - - -**Acknowledgements** - -* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5) diff --git a/docs/team/agenthagu.md b/docs/team/agenthagu.md deleted file mode 100644 index 18916cdc606..00000000000 --- a/docs/team/agenthagu.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: page -title: Adrian's Project Portfolio Page ---- - -### Project: EduConnect - -EduConnect is a desktop app for teachers to manage and store the details of students and other teachers. - -Given below are my contributions to the project. diff --git a/docs/team/amoschee.md b/docs/team/amoschee.md deleted file mode 100644 index 0eaf0e7f3bf..00000000000 --- a/docs/team/amoschee.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: page -title: Amos' Project Portfolio Page ---- - -### Project: EduConnect - -EduConnect is a desktop address book application used for teachers looking to manage their students' details. - -Given below are my contributions to the project. diff --git a/docs/team/arnaxx54.md b/docs/team/arnaxx54.md deleted file mode 100644 index 772016d3bb3..00000000000 --- a/docs/team/arnaxx54.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: page -title: Arnav's Project Portfolio Page ---- - -### Project: EduConnect - -EduConnect is a desktop app for teachers to manage and store the details of students and other teachers. - -Given below are my contributions to the project. diff --git a/docs/team/maahir-garg.md b/docs/team/maahir-garg.md deleted file mode 100644 index d59955f5abd..00000000000 --- a/docs/team/maahir-garg.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -layout: page -title: Maahir's Project Portfolio Page ---- - -### Project: AddressBook Level 3 - -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. - -Given below are my contributions to the project. diff --git a/docs/team/nihalramesh12629.md b/docs/team/nihalramesh12629.md deleted file mode 100644 index c2745f3341b..00000000000 --- a/docs/team/nihalramesh12629.md +++ /dev/null @@ -1,6 +0,0 @@ - -### Project: EduConnect - -EduConnect is a desktop address book application used for teachers looking to manage their student's details. - -Given below are my contributions to the project. diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 8bee08b60de..00000000000 --- a/gradle.properties +++ /dev/null @@ -1,2 +0,0 @@ -org.gradle.parallel=false -org.gradle.jvmargs=-XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Xmx1024m -Dfile.encoding=utf-8 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59203 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

    K7UpUK$>l@ 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 E2O(~oYXATM diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index aa991fceae6..00000000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew deleted file mode 100755 index 1b6c787337f..00000000000 --- a/gradlew +++ /dev/null @@ -1,234 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat deleted file mode 100644 index 107acd32c4e..00000000000 --- a/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/src/main/java/seedu/address/AppParameters.java b/src/main/java/seedu/address/AppParameters.java deleted file mode 100644 index 3d603622d4e..00000000000 --- a/src/main/java/seedu/address/AppParameters.java +++ /dev/null @@ -1,73 +0,0 @@ -package seedu.address; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Map; -import java.util.Objects; -import java.util.logging.Logger; - -import javafx.application.Application; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.util.FileUtil; -import seedu.address.commons.util.ToStringBuilder; - -/** - * Represents the parsed command-line parameters given to the application. - */ -public class AppParameters { - private static final Logger logger = LogsCenter.getLogger(AppParameters.class); - - private Path configPath; - - public Path getConfigPath() { - return configPath; - } - - public void setConfigPath(Path configPath) { - this.configPath = configPath; - } - - /** - * Parses the application command-line parameters. - */ - public static AppParameters parse(Application.Parameters parameters) { - AppParameters appParameters = new AppParameters(); - Map namedParameters = parameters.getNamed(); - - String configPathParameter = namedParameters.get("config"); - if (configPathParameter != null && !FileUtil.isValidPath(configPathParameter)) { - logger.warning("Invalid config path " + configPathParameter + ". Using default config path."); - configPathParameter = null; - } - appParameters.setConfigPath(configPathParameter != null ? Paths.get(configPathParameter) : null); - - return appParameters; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof AppParameters)) { - return false; - } - - AppParameters otherAppParameters = (AppParameters) other; - return Objects.equals(configPath, otherAppParameters.configPath); - } - - @Override - public int hashCode() { - return configPath.hashCode(); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("configPath", configPath) - .toString(); - } -} diff --git a/src/main/java/seedu/address/Main.java b/src/main/java/seedu/address/Main.java deleted file mode 100644 index 9461d6da769..00000000000 --- a/src/main/java/seedu/address/Main.java +++ /dev/null @@ -1,41 +0,0 @@ -package seedu.address; - -import java.util.logging.Logger; - -import javafx.application.Application; -import seedu.address.commons.core.LogsCenter; - -/** - * The main entry point to the application. - * - * This is a workaround for the following error when MainApp is made the - * entry point of the application: - * - * Error: JavaFX runtime components are missing, and are required to run this application - * - * The reason is that MainApp extends Application. In that case, the - * LauncherHelper will check for the javafx.graphics module to be present - * as a named module. We don't use JavaFX via the module system so it can't - * find the javafx.graphics module, and so the launch is aborted. - * - * By having a separate main class (Main) that doesn't extend Application - * to be the entry point of the application, we avoid this issue. - */ -public class Main { - private static Logger logger = LogsCenter.getLogger(Main.class); - - public static void main(String[] args) { - - // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md - // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from - // the classpath instead of a module. - // Our application does not use Java modules yet. Even if it did, modules are ignored when - // packed into a FAT Jar file (as we do), which means this warning will persist even then. - // The warning however, can be safely ignored. Thus, the following log informs - // the user (if looking at the log output) that the said warning appearing in the log - // can be ignored. - - logger.warning("The warning about Unsupported JavaFX configuration below (if any) can be ignored."); - Application.launch(MainApp.class, args); - } -} diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java deleted file mode 100644 index 678ddc8c218..00000000000 --- a/src/main/java/seedu/address/MainApp.java +++ /dev/null @@ -1,186 +0,0 @@ -package seedu.address; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; -import java.util.logging.Logger; - -import javafx.application.Application; -import javafx.stage.Stage; -import seedu.address.commons.core.Config; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.core.Version; -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.commons.util.ConfigUtil; -import seedu.address.commons.util.StringUtil; -import seedu.address.logic.Logic; -import seedu.address.logic.LogicManager; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; -import seedu.address.model.util.SampleDataUtil; -import seedu.address.storage.AddressBookStorage; -import seedu.address.storage.JsonAddressBookStorage; -import seedu.address.storage.JsonUserPrefsStorage; -import seedu.address.storage.Storage; -import seedu.address.storage.StorageManager; -import seedu.address.storage.UserPrefsStorage; -import seedu.address.ui.Ui; -import seedu.address.ui.UiManager; - -/** - * Runs the application. - */ -public class MainApp extends Application { - - public static final Version VERSION = new Version(0, 2, 2, true); - - private static final Logger logger = LogsCenter.getLogger(MainApp.class); - - protected Ui ui; - protected Logic logic; - protected Storage storage; - protected Model model; - protected Config config; - - @Override - public void init() throws Exception { - logger.info("=============================[ Initializing AddressBook ]==========================="); - super.init(); - - AppParameters appParameters = AppParameters.parse(getParameters()); - config = initConfig(appParameters.getConfigPath()); - initLogging(config); - - UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); - UserPrefs userPrefs = initPrefs(userPrefsStorage); - AddressBookStorage addressBookStorage = new JsonAddressBookStorage(userPrefs.getAddressBookFilePath()); - storage = new StorageManager(addressBookStorage, userPrefsStorage); - - model = initModelManager(storage, userPrefs); - - logic = new LogicManager(model, storage); - - ui = new UiManager(logic); - } - - /** - * Returns a {@code ModelManager} with the data from {@code storage}'s address book and {@code userPrefs}.
    - * The data from the sample address book will be used instead if {@code storage}'s address book is not found, - * or an empty address book will be used instead if errors occur when reading {@code storage}'s address book. - */ - private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) { - logger.info("Using data file : " + storage.getAddressBookFilePath()); - - Optional addressBookOptional; - ReadOnlyAddressBook initialData; - try { - addressBookOptional = storage.readAddressBook(); - if (!addressBookOptional.isPresent()) { - logger.info("Creating a new data file " + storage.getAddressBookFilePath() - + " populated with a sample AddressBook."); - } - initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); - } catch (DataLoadingException e) { - logger.warning("Data file at " + storage.getAddressBookFilePath() + " could not be loaded." - + " Will be starting with an empty AddressBook."); - initialData = new AddressBook(); - } - - return new ModelManager(initialData, userPrefs); - } - - private void initLogging(Config config) { - LogsCenter.init(config); - } - - /** - * Returns a {@code Config} using the file at {@code configFilePath}.
    - * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead - * if {@code configFilePath} is null. - */ - protected Config initConfig(Path configFilePath) { - Config initializedConfig; - Path configFilePathUsed; - - configFilePathUsed = Config.DEFAULT_CONFIG_FILE; - - if (configFilePath != null) { - logger.info("Custom Config file specified " + configFilePath); - configFilePathUsed = configFilePath; - } - - logger.info("Using config file : " + configFilePathUsed); - - try { - Optional configOptional = ConfigUtil.readConfig(configFilePathUsed); - if (!configOptional.isPresent()) { - logger.info("Creating new config file " + configFilePathUsed); - } - initializedConfig = configOptional.orElse(new Config()); - } catch (DataLoadingException e) { - logger.warning("Config file at " + configFilePathUsed + " could not be loaded." - + " Using default config properties."); - initializedConfig = new Config(); - } - - //Update config file in case it was missing to begin with or there are new/unused fields - try { - ConfigUtil.saveConfig(initializedConfig, configFilePathUsed); - } catch (IOException e) { - logger.warning("Failed to save config file : " + StringUtil.getDetails(e)); - } - return initializedConfig; - } - - /** - * Returns a {@code UserPrefs} using the file at {@code storage}'s user prefs file path, - * or a new {@code UserPrefs} with default configuration if errors occur when - * reading from the file. - */ - protected UserPrefs initPrefs(UserPrefsStorage storage) { - Path prefsFilePath = storage.getUserPrefsFilePath(); - logger.info("Using preference file : " + prefsFilePath); - - UserPrefs initializedPrefs; - try { - Optional prefsOptional = storage.readUserPrefs(); - if (!prefsOptional.isPresent()) { - logger.info("Creating new preference file " + prefsFilePath); - } - initializedPrefs = prefsOptional.orElse(new UserPrefs()); - } catch (DataLoadingException e) { - logger.warning("Preference file at " + prefsFilePath + " could not be loaded." - + " Using default preferences."); - initializedPrefs = new UserPrefs(); - } - - //Update prefs file in case it was missing to begin with or there are new/unused fields - try { - storage.saveUserPrefs(initializedPrefs); - } catch (IOException e) { - logger.warning("Failed to save config file : " + StringUtil.getDetails(e)); - } - - return initializedPrefs; - } - - @Override - public void start(Stage primaryStage) { - logger.info("Starting AddressBook " + MainApp.VERSION); - ui.start(primaryStage); - } - - @Override - public void stop() { - logger.info("============================ [ Stopping AddressBook ] ============================="); - try { - storage.saveUserPrefs(model.getUserPrefs()); - } catch (IOException e) { - logger.severe("Failed to save preferences " + StringUtil.getDetails(e)); - } - } -} diff --git a/src/main/java/seedu/address/commons/core/Config.java b/src/main/java/seedu/address/commons/core/Config.java deleted file mode 100644 index 485f85a5e05..00000000000 --- a/src/main/java/seedu/address/commons/core/Config.java +++ /dev/null @@ -1,66 +0,0 @@ -package seedu.address.commons.core; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Objects; -import java.util.logging.Level; - -import seedu.address.commons.util.ToStringBuilder; - -/** - * Config values used by the app - */ -public class Config { - - public static final Path DEFAULT_CONFIG_FILE = Paths.get("config.json"); - - // Config values customizable through config file - private Level logLevel = Level.INFO; - private Path userPrefsFilePath = Paths.get("preferences.json"); - - public Level getLogLevel() { - return logLevel; - } - - public void setLogLevel(Level logLevel) { - this.logLevel = logLevel; - } - - public Path getUserPrefsFilePath() { - return userPrefsFilePath; - } - - public void setUserPrefsFilePath(Path userPrefsFilePath) { - this.userPrefsFilePath = userPrefsFilePath; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Config)) { - return false; - } - - Config otherConfig = (Config) other; - return Objects.equals(logLevel, otherConfig.logLevel) - && Objects.equals(userPrefsFilePath, otherConfig.userPrefsFilePath); - } - - @Override - public int hashCode() { - return Objects.hash(logLevel, userPrefsFilePath); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("logLevel", logLevel) - .add("userPrefsFilePath", userPrefsFilePath) - .toString(); - } - -} diff --git a/src/main/java/seedu/address/commons/core/GuiSettings.java b/src/main/java/seedu/address/commons/core/GuiSettings.java deleted file mode 100644 index a97a86ee8d7..00000000000 --- a/src/main/java/seedu/address/commons/core/GuiSettings.java +++ /dev/null @@ -1,82 +0,0 @@ -package seedu.address.commons.core; - -import java.awt.Point; -import java.io.Serializable; -import java.util.Objects; - -import seedu.address.commons.util.ToStringBuilder; - -/** - * A Serializable class that contains the GUI settings. - * Guarantees: immutable. - */ -public class GuiSettings implements Serializable { - - private static final double DEFAULT_HEIGHT = 600; - private static final double DEFAULT_WIDTH = 740; - - private final double windowWidth; - private final double windowHeight; - private final Point windowCoordinates; - - /** - * Constructs a {@code GuiSettings} with the default height, width and position. - */ - public GuiSettings() { - windowWidth = DEFAULT_WIDTH; - windowHeight = DEFAULT_HEIGHT; - windowCoordinates = null; // null represent no coordinates - } - - /** - * Constructs a {@code GuiSettings} with the specified height, width and position. - */ - public GuiSettings(double windowWidth, double windowHeight, int xPosition, int yPosition) { - this.windowWidth = windowWidth; - this.windowHeight = windowHeight; - windowCoordinates = new Point(xPosition, yPosition); - } - - public double getWindowWidth() { - return windowWidth; - } - - public double getWindowHeight() { - return windowHeight; - } - - public Point getWindowCoordinates() { - return windowCoordinates != null ? new Point(windowCoordinates) : null; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof GuiSettings)) { - return false; - } - - GuiSettings otherGuiSettings = (GuiSettings) other; - return windowWidth == otherGuiSettings.windowWidth - && windowHeight == otherGuiSettings.windowHeight - && Objects.equals(windowCoordinates, otherGuiSettings.windowCoordinates); - } - - @Override - public int hashCode() { - return Objects.hash(windowWidth, windowHeight, windowCoordinates); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("windowWidth", windowWidth) - .add("windowHeight", windowHeight) - .add("windowCoordinates", windowCoordinates) - .toString(); - } -} diff --git a/src/main/java/seedu/address/commons/core/LogsCenter.java b/src/main/java/seedu/address/commons/core/LogsCenter.java deleted file mode 100644 index 8cf8e15a0f0..00000000000 --- a/src/main/java/seedu/address/commons/core/LogsCenter.java +++ /dev/null @@ -1,106 +0,0 @@ -package seedu.address.commons.core; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.util.Arrays; -import java.util.logging.ConsoleHandler; -import java.util.logging.FileHandler; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.logging.SimpleFormatter; - -/** - * Configures and manages loggers and handlers, including their logging level - * Named {@link Logger}s can be obtained from this class
    - * These loggers have been configured to output messages to the console and a {@code .log} file by default, - * at the {@code INFO} level. A new {@code .log} file with a new numbering will be created after the log - * file reaches 5MB big, up to a maximum of 5 files.
    - */ -public class LogsCenter { - private static final int MAX_FILE_COUNT = 5; - private static final int MAX_FILE_SIZE_IN_BYTES = (int) (Math.pow(2, 20) * 5); // 5MB - private static final String LOG_FILE = "addressbook.log"; - private static final Logger logger; // logger for this class - private static Logger baseLogger; // to be used as the parent of all other loggers created by this class. - private static Level currentLogLevel = Level.INFO; - - // This static block ensures essential loggers are created early - static { - setBaseLogger(); - logger = LogsCenter.getLogger(LogsCenter.class); - } - - /** - * Initializes loggers with the log level specified in the {@code config} object. Applies to all loggers created - * using {@link #getLogger(String)} and {@link #getLogger(Class)} methods except for those that are manually set. - */ - public static void init(Config config) { - currentLogLevel = config.getLogLevel(); - logger.info("Log level will be set as: " + currentLogLevel); - // set the level of the baseLogger which will be inherited by other loggers - baseLogger.setLevel(currentLogLevel); - } - - /** - * Creates a logger with the given name prefixed by the {@code baseLogger}'s name so that the created logger - * becomes a descendant of the {@code baseLogger}. Furthermore, the returned logger will have the same log handlers - * as the {@code baseLogger}. - */ - public static Logger getLogger(String name) { - // Java organizes loggers into a hierarchy based on their names (using '.' as a separator, similar to how Java - // packages form a hierarchy). Furthermore, loggers without a level inherit the level of their parent logger. - // By prefixing names of all loggers with baseLogger's name + ".", we make the baseLogger the parent of all - // loggers. This allows us to change the level of all loggers simply by changing the baseLogger level. - Logger logger = Logger.getLogger(baseLogger.getName() + "." + name); - removeHandlers(logger); - logger.setUseParentHandlers(true); - return logger; - } - - /** - * Creates a Logger for the given class name. - */ - public static Logger getLogger(Class clazz) { - requireNonNull(clazz); - return getLogger(clazz.getSimpleName()); - } - - /** - * Removes all handlers from the {@code logger}. - */ - private static void removeHandlers(Logger logger) { - Arrays.stream(logger.getHandlers()) - .forEach(logger::removeHandler); - } - - /** - * Creates a logger named 'ab3', containing a {@code ConsoleHandler} and a {@code FileHandler}. - * Sets it as the {@code baseLogger}, to be used as the parent logger of all other loggers. - */ - private static void setBaseLogger() { - baseLogger = Logger.getLogger("ab3"); - baseLogger.setUseParentHandlers(false); - removeHandlers(baseLogger); - - // Level.ALL is used as the level for the handlers because the baseLogger filters the log messages by level - // already; there is no need to control log message level of the handlers. - - // add a ConsoleHandler to log to the console - ConsoleHandler consoleHandler = new ConsoleHandler(); - consoleHandler.setLevel(Level.ALL); - baseLogger.addHandler(consoleHandler); - - // add a FileHandler to log to a file - try { - FileHandler fileHandler = new FileHandler(LOG_FILE, MAX_FILE_SIZE_IN_BYTES, MAX_FILE_COUNT, true); - fileHandler.setFormatter(new SimpleFormatter()); - fileHandler.setLevel(Level.ALL); - baseLogger.addHandler(fileHandler); - } catch (IOException e) { - logger.warning("Error adding file handler for logger."); - } - } - - -} diff --git a/src/main/java/seedu/address/commons/core/Version.java b/src/main/java/seedu/address/commons/core/Version.java deleted file mode 100644 index 491d24559b4..00000000000 --- a/src/main/java/seedu/address/commons/core/Version.java +++ /dev/null @@ -1,121 +0,0 @@ -package seedu.address.commons.core; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * Represents a version with major, minor and patch number - */ -public class Version implements Comparable { - - public static final String VERSION_REGEX = "V(\\d+)\\.(\\d+)\\.(\\d+)(ea)?"; - - private static final String EXCEPTION_STRING_NOT_VERSION = "String is not a valid Version. %s"; - - private static final Pattern VERSION_PATTERN = Pattern.compile(VERSION_REGEX); - - private final int major; - private final int minor; - private final int patch; - private final boolean isEarlyAccess; - - /** - * Constructs a {@code Version} with the given version details. - */ - public Version(int major, int minor, int patch, boolean isEarlyAccess) { - this.major = major; - this.minor = minor; - this.patch = patch; - this.isEarlyAccess = isEarlyAccess; - } - - public int getMajor() { - return major; - } - - public int getMinor() { - return minor; - } - - public int getPatch() { - return patch; - } - - public boolean isEarlyAccess() { - return isEarlyAccess; - } - - /** - * Parses a version number string in the format V1.2.3. - * @param versionString version number string - * @return a Version object - */ - @JsonCreator - public static Version fromString(String versionString) throws IllegalArgumentException { - Matcher versionMatcher = VERSION_PATTERN.matcher(versionString); - - if (!versionMatcher.find()) { - throw new IllegalArgumentException(String.format(EXCEPTION_STRING_NOT_VERSION, versionString)); - } - - return new Version(Integer.parseInt(versionMatcher.group(1)), - Integer.parseInt(versionMatcher.group(2)), - Integer.parseInt(versionMatcher.group(3)), - versionMatcher.group(4) == null ? false : true); - } - - @JsonValue - public String toString() { - return String.format("V%d.%d.%d%s", major, minor, patch, isEarlyAccess ? "ea" : ""); - } - - @Override - public int compareTo(Version other) { - if (major != other.major) { - return major - other.major; - } - if (minor != other.minor) { - return minor - other.minor; - } - if (patch != other.patch) { - return patch - other.patch; - } - if (isEarlyAccess == other.isEarlyAccess()) { - return 0; - } - if (isEarlyAccess) { - return -1; - } - return 1; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Version)) { - return false; - } - - Version otherVersion = (Version) other; - return major == otherVersion.major - && minor == otherVersion.minor - && patch == otherVersion.patch - && isEarlyAccess == otherVersion.isEarlyAccess; - } - - @Override - public int hashCode() { - String hash = String.format("%03d%03d%03d", major, minor, patch); - if (!isEarlyAccess) { - hash = "1" + hash; - } - return Integer.parseInt(hash); - } -} diff --git a/src/main/java/seedu/address/commons/core/index/Index.java b/src/main/java/seedu/address/commons/core/index/Index.java deleted file mode 100644 index dd170d8b68d..00000000000 --- a/src/main/java/seedu/address/commons/core/index/Index.java +++ /dev/null @@ -1,69 +0,0 @@ -package seedu.address.commons.core.index; - -import seedu.address.commons.util.ToStringBuilder; - -/** - * Represents a zero-based or one-based index. - * - * {@code Index} should be used right from the start (when parsing in a new user input), so that if the current - * component wants to communicate with another component, it can send an {@code Index} to avoid having to know what - * base the other component is using for its index. However, after receiving the {@code Index}, that component can - * convert it back to an int if the index will not be passed to a different component again. - */ -public class Index { - private int zeroBasedIndex; - - /** - * Index can only be created by calling {@link Index#fromZeroBased(int)} or - * {@link Index#fromOneBased(int)}. - */ - private Index(int zeroBasedIndex) { - if (zeroBasedIndex < 0) { - throw new IndexOutOfBoundsException(); - } - - this.zeroBasedIndex = zeroBasedIndex; - } - - public int getZeroBased() { - return zeroBasedIndex; - } - - public int getOneBased() { - return zeroBasedIndex + 1; - } - - /** - * Creates a new {@code Index} using a zero-based index. - */ - public static Index fromZeroBased(int zeroBasedIndex) { - return new Index(zeroBasedIndex); - } - - /** - * Creates a new {@code Index} using a one-based index. - */ - public static Index fromOneBased(int oneBasedIndex) { - return new Index(oneBasedIndex - 1); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Index)) { - return false; - } - - Index otherIndex = (Index) other; - return zeroBasedIndex == otherIndex.zeroBasedIndex; - } - - @Override - public String toString() { - return new ToStringBuilder(this).add("zeroBasedIndex", zeroBasedIndex).toString(); - } -} diff --git a/src/main/java/seedu/address/commons/exceptions/DataLoadingException.java b/src/main/java/seedu/address/commons/exceptions/DataLoadingException.java deleted file mode 100644 index 9904ba47afe..00000000000 --- a/src/main/java/seedu/address/commons/exceptions/DataLoadingException.java +++ /dev/null @@ -1,11 +0,0 @@ -package seedu.address.commons.exceptions; - -/** - * Represents an error during loading of data from a file. - */ -public class DataLoadingException extends Exception { - public DataLoadingException(Exception cause) { - super(cause); - } - -} diff --git a/src/main/java/seedu/address/commons/exceptions/IllegalValueException.java b/src/main/java/seedu/address/commons/exceptions/IllegalValueException.java deleted file mode 100644 index 19124db485c..00000000000 --- a/src/main/java/seedu/address/commons/exceptions/IllegalValueException.java +++ /dev/null @@ -1,21 +0,0 @@ -package seedu.address.commons.exceptions; - -/** - * Signals that some given data does not fulfill some constraints. - */ -public class IllegalValueException extends Exception { - /** - * @param message should contain relevant information on the failed constraint(s) - */ - public IllegalValueException(String message) { - super(message); - } - - /** - * @param message should contain relevant information on the failed constraint(s) - * @param cause of the main exception - */ - public IllegalValueException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/src/main/java/seedu/address/commons/util/AppUtil.java b/src/main/java/seedu/address/commons/util/AppUtil.java deleted file mode 100644 index 87aa89c0326..00000000000 --- a/src/main/java/seedu/address/commons/util/AppUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package seedu.address.commons.util; - -import static java.util.Objects.requireNonNull; - -import javafx.scene.image.Image; -import seedu.address.MainApp; - -/** - * A container for App specific utility functions - */ -public class AppUtil { - - /** - * Gets an {@code Image} from the specified path. - */ - public static Image getImage(String imagePath) { - requireNonNull(imagePath); - return new Image(MainApp.class.getResourceAsStream(imagePath)); - } - - /** - * Checks that {@code condition} is true. Used for validating arguments to methods. - * - * @throws IllegalArgumentException if {@code condition} is false. - */ - public static void checkArgument(Boolean condition) { - if (!condition) { - throw new IllegalArgumentException(); - } - } - - /** - * Checks that {@code condition} is true. Used for validating arguments to methods. - * - * @throws IllegalArgumentException with {@code errorMessage} if {@code condition} is false. - */ - public static void checkArgument(Boolean condition, String errorMessage) { - if (!condition) { - throw new IllegalArgumentException(errorMessage); - } - } -} diff --git a/src/main/java/seedu/address/commons/util/CollectionUtil.java b/src/main/java/seedu/address/commons/util/CollectionUtil.java deleted file mode 100644 index eafe4dfd681..00000000000 --- a/src/main/java/seedu/address/commons/util/CollectionUtil.java +++ /dev/null @@ -1,35 +0,0 @@ -package seedu.address.commons.util; - -import static java.util.Objects.requireNonNull; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Objects; -import java.util.stream.Stream; - -/** - * Utility methods related to Collections - */ -public class CollectionUtil { - - /** @see #requireAllNonNull(Collection) */ - public static void requireAllNonNull(Object... items) { - requireNonNull(items); - Stream.of(items).forEach(Objects::requireNonNull); - } - - /** - * Throws NullPointerException if {@code items} or any element of {@code items} is null. - */ - public static void requireAllNonNull(Collection items) { - requireNonNull(items); - items.forEach(Objects::requireNonNull); - } - - /** - * Returns true if {@code items} contain any elements that are non-null. - */ - public static boolean isAnyNonNull(Object... items) { - return items != null && Arrays.stream(items).anyMatch(Objects::nonNull); - } -} diff --git a/src/main/java/seedu/address/commons/util/ConfigUtil.java b/src/main/java/seedu/address/commons/util/ConfigUtil.java deleted file mode 100644 index 7b829c3c4cc..00000000000 --- a/src/main/java/seedu/address/commons/util/ConfigUtil.java +++ /dev/null @@ -1,23 +0,0 @@ -package seedu.address.commons.util; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.core.Config; -import seedu.address.commons.exceptions.DataLoadingException; - -/** - * A class for accessing the Config File. - */ -public class ConfigUtil { - - public static Optional readConfig(Path configFilePath) throws DataLoadingException { - return JsonUtil.readJsonFile(configFilePath, Config.class); - } - - public static void saveConfig(Config config, Path configFilePath) throws IOException { - JsonUtil.saveJsonFile(config, configFilePath); - } - -} diff --git a/src/main/java/seedu/address/commons/util/FileUtil.java b/src/main/java/seedu/address/commons/util/FileUtil.java deleted file mode 100644 index b1e2767cdd9..00000000000 --- a/src/main/java/seedu/address/commons/util/FileUtil.java +++ /dev/null @@ -1,83 +0,0 @@ -package seedu.address.commons.util; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.InvalidPathException; -import java.nio.file.Path; -import java.nio.file.Paths; - -/** - * Writes and reads files - */ -public class FileUtil { - - private static final String CHARSET = "UTF-8"; - - public static boolean isFileExists(Path file) { - return Files.exists(file) && Files.isRegularFile(file); - } - - /** - * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String)}, - * otherwise returns false. - * @param path A string representing the file path. Cannot be null. - */ - public static boolean isValidPath(String path) { - try { - Paths.get(path); - } catch (InvalidPathException ipe) { - return false; - } - return true; - } - - /** - * Creates a file if it does not exist along with its missing parent directories. - * @throws IOException if the file or directory cannot be created. - */ - public static void createIfMissing(Path file) throws IOException { - if (!isFileExists(file)) { - createFile(file); - } - } - - /** - * Creates a file if it does not exist along with its missing parent directories. - */ - public static void createFile(Path file) throws IOException { - if (Files.exists(file)) { - return; - } - - createParentDirsOfFile(file); - - Files.createFile(file); - } - - /** - * Creates parent directories of file if it has a parent directory - */ - public static void createParentDirsOfFile(Path file) throws IOException { - Path parentDir = file.getParent(); - - if (parentDir != null) { - Files.createDirectories(parentDir); - } - } - - /** - * Assumes file exists - */ - public static String readFromFile(Path file) throws IOException { - return new String(Files.readAllBytes(file), CHARSET); - } - - /** - * Writes given string to a file. - * Will create the file if it does not exist yet. - */ - public static void writeToFile(Path file, String content) throws IOException { - Files.write(file, content.getBytes(CHARSET)); - } - -} diff --git a/src/main/java/seedu/address/commons/util/JsonUtil.java b/src/main/java/seedu/address/commons/util/JsonUtil.java deleted file mode 100644 index 100cb16c395..00000000000 --- a/src/main/java/seedu/address/commons/util/JsonUtil.java +++ /dev/null @@ -1,144 +0,0 @@ -package seedu.address.commons.util; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Optional; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.PropertyAccessor; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; - -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataLoadingException; - -/** - * Converts a Java object instance to JSON and vice versa - */ -public class JsonUtil { - - private static final Logger logger = LogsCenter.getLogger(JsonUtil.class); - - private static ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules() - .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - .setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE) - .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) - .registerModule(new SimpleModule("SimpleModule") - .addSerializer(Level.class, new ToStringSerializer()) - .addDeserializer(Level.class, new LevelDeserializer(Level.class))); - - static void serializeObjectToJsonFile(Path jsonFile, T objectToSerialize) throws IOException { - FileUtil.writeToFile(jsonFile, toJsonString(objectToSerialize)); - } - - static T deserializeObjectFromJsonFile(Path jsonFile, Class classOfObjectToDeserialize) - throws IOException { - return fromJsonString(FileUtil.readFromFile(jsonFile), classOfObjectToDeserialize); - } - - /** - * Returns the JSON object from the given file or {@code Optional.empty()} object if the file is not found. - * If any values are missing from the file, default values will be used, as long as the file is a valid JSON file. - * - * @param filePath cannot be null. - * @param classOfObjectToDeserialize JSON file has to correspond to the structure in the class given here. - * @throws DataLoadingException if loading of the JSON file failed. - */ - public static Optional readJsonFile( - Path filePath, Class classOfObjectToDeserialize) throws DataLoadingException { - requireNonNull(filePath); - - if (!Files.exists(filePath)) { - return Optional.empty(); - } - logger.info("JSON file " + filePath + " found."); - - T jsonFile; - - try { - jsonFile = deserializeObjectFromJsonFile(filePath, classOfObjectToDeserialize); - } catch (IOException e) { - logger.warning("Error reading from jsonFile file " + filePath + ": " + e); - throw new DataLoadingException(e); - } - - return Optional.of(jsonFile); - } - - /** - * Saves the Json object to the specified file. - * Overwrites existing file if it exists, creates a new file if it doesn't. - * @param jsonFile cannot be null - * @param filePath cannot be null - * @throws IOException if there was an error during writing to the file - */ - public static void saveJsonFile(T jsonFile, Path filePath) throws IOException { - requireNonNull(filePath); - requireNonNull(jsonFile); - - serializeObjectToJsonFile(filePath, jsonFile); - } - - - /** - * Converts a given string representation of a JSON data to instance of a class - * @param The generic type to create an instance of - * @return The instance of T with the specified values in the JSON string - */ - public static T fromJsonString(String json, Class instanceClass) throws IOException { - return objectMapper.readValue(json, instanceClass); - } - - /** - * Converts a given instance of a class into its JSON data string representation - * @param instance The T object to be converted into the JSON string - * @param The generic type to create an instance of - * @return JSON data representation of the given class instance, in string - */ - public static String toJsonString(T instance) throws JsonProcessingException { - return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(instance); - } - - /** - * Contains methods that retrieve logging level from serialized string. - */ - private static class LevelDeserializer extends FromStringDeserializer { - - protected LevelDeserializer(Class vc) { - super(vc); - } - - @Override - protected Level _deserialize(String value, DeserializationContext ctxt) { - return getLoggingLevel(value); - } - - /** - * Gets the logging level that matches loggingLevelString - *

    - * Returns null if there are no matches - * - */ - private Level getLoggingLevel(String loggingLevelString) { - return Level.parse(loggingLevelString); - } - - @Override - public Class handledType() { - return Level.class; - } - } - -} diff --git a/src/main/java/seedu/address/commons/util/StringUtil.java b/src/main/java/seedu/address/commons/util/StringUtil.java deleted file mode 100644 index 61cc8c9a1cb..00000000000 --- a/src/main/java/seedu/address/commons/util/StringUtil.java +++ /dev/null @@ -1,68 +0,0 @@ -package seedu.address.commons.util; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Arrays; - -/** - * Helper functions for handling strings. - */ -public class StringUtil { - - /** - * Returns true if the {@code sentence} contains the {@code word}. - * Ignores case, but a full word match is required. - *
    examples:

    -     *       containsWordIgnoreCase("ABc def", "abc") == true
    -     *       containsWordIgnoreCase("ABc def", "DEF") == true
    -     *       containsWordIgnoreCase("ABc def", "AB") == false //not a full word match
    -     *       
    - * @param sentence cannot be null - * @param word cannot be null, cannot be empty, must be a single word - */ - public static boolean containsWordIgnoreCase(String sentence, String word) { - requireNonNull(sentence); - requireNonNull(word); - - String preppedWord = word.trim(); - checkArgument(!preppedWord.isEmpty(), "Word parameter cannot be empty"); - checkArgument(preppedWord.split("\\s+").length == 1, "Word parameter should be a single word"); - - String preppedSentence = sentence; - String[] wordsInPreppedSentence = preppedSentence.split("\\s+"); - - return Arrays.stream(wordsInPreppedSentence) - .anyMatch(preppedWord::equalsIgnoreCase); - } - - /** - * Returns a detailed message of the t, including the stack trace. - */ - public static String getDetails(Throwable t) { - requireNonNull(t); - StringWriter sw = new StringWriter(); - t.printStackTrace(new PrintWriter(sw)); - return t.getMessage() + "\n" + sw.toString(); - } - - /** - * Returns true if {@code s} represents a non-zero unsigned integer - * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE}
    - * Will return false for any other non-null string input - * e.g. empty string, "-1", "0", "+1", and " 2 " (untrimmed), "3 0" (contains whitespace), "1 a" (contains letters) - * @throws NullPointerException if {@code s} is null. - */ - public static boolean isNonZeroUnsignedInteger(String s) { - requireNonNull(s); - - try { - int value = Integer.parseInt(s); - return value > 0 && !s.startsWith("+"); // "+1" is successfully parsed by Integer#parseInt(String) - } catch (NumberFormatException nfe) { - return false; - } - } -} diff --git a/src/main/java/seedu/address/commons/util/ToStringBuilder.java b/src/main/java/seedu/address/commons/util/ToStringBuilder.java deleted file mode 100644 index d979b926734..00000000000 --- a/src/main/java/seedu/address/commons/util/ToStringBuilder.java +++ /dev/null @@ -1,53 +0,0 @@ -package seedu.address.commons.util; - -/** - * Builds a string representation of an object that is suitable as the return value of {@link Object#toString()}. - */ -public class ToStringBuilder { - private static final String OBJECT_PREFIX = "{"; - private static final String OBJECT_SUFFIX = "}"; - private static final String FIELD_SEPARATOR = ", "; - private static final String FIELD_NAME_VALUE_SEPARATOR = "="; - - private final StringBuilder stringBuilder = new StringBuilder(); - private boolean hasField; - - /** - * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with {@code objectName}. - */ - public ToStringBuilder(String objectName) { - stringBuilder.append(objectName).append(OBJECT_PREFIX); - } - - /** - * Constructs a {@code ToStringBuilder} whose formatted output will be prefixed with the - * canonical class name of {@code object}. - */ - public ToStringBuilder(Object object) { - this(object.getClass().getCanonicalName()); - } - - /** - * Adds a field name/value pair to the output string. - * - * @param fieldName The name of the field. - * @param fieldValue The value of the field. - * @return A reference to this {@code ToStringBuilder} object, allowing method calls to be chained. - */ - public ToStringBuilder add(String fieldName, Object fieldValue) { - if (hasField) { - stringBuilder.append(FIELD_SEPARATOR); - } - stringBuilder.append(fieldName).append(FIELD_NAME_VALUE_SEPARATOR).append(fieldValue); - hasField = true; - return this; - } - - /** - * Returns the built formatted string representation. - */ - @Override - public String toString() { - return stringBuilder.toString() + OBJECT_SUFFIX; - } -} diff --git a/src/main/java/seedu/address/logic/Logic.java b/src/main/java/seedu/address/logic/Logic.java deleted file mode 100644 index 92cd8fa605a..00000000000 --- a/src/main/java/seedu/address/logic/Logic.java +++ /dev/null @@ -1,50 +0,0 @@ -package seedu.address.logic; - -import java.nio.file.Path; - -import javafx.collections.ObservableList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; - -/** - * API of the Logic component - */ -public interface Logic { - /** - * Executes the command and returns the result. - * @param commandText The command as entered by the user. - * @return the result of the command execution. - * @throws CommandException If an error occurs during command execution. - * @throws ParseException If an error occurs during parsing. - */ - CommandResult execute(String commandText) throws CommandException, ParseException; - - /** - * Returns the AddressBook. - * - * @see seedu.address.model.Model#getAddressBook() - */ - ReadOnlyAddressBook getAddressBook(); - - /** Returns an unmodifiable view of the filtered list of persons */ - ObservableList getFilteredPersonList(); - - /** - * Returns the user prefs' address book file path. - */ - Path getAddressBookFilePath(); - - /** - * Returns the user prefs' GUI settings. - */ - GuiSettings getGuiSettings(); - - /** - * Set the user prefs' GUI settings. - */ - void setGuiSettings(GuiSettings guiSettings); -} diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java deleted file mode 100644 index 5aa3b91c7d0..00000000000 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ /dev/null @@ -1,88 +0,0 @@ -package seedu.address.logic; - -import java.io.IOException; -import java.nio.file.AccessDeniedException; -import java.nio.file.Path; -import java.util.logging.Logger; - -import javafx.collections.ObservableList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.commands.Command; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.AddressBookParser; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.Model; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; -import seedu.address.storage.Storage; - -/** - * The main LogicManager of the app. - */ -public class LogicManager implements Logic { - public static final String FILE_OPS_ERROR_FORMAT = "Could not save data due to the following error: %s"; - - public static final String FILE_OPS_PERMISSION_ERROR_FORMAT = - "Could not save data to file %s due to insufficient permissions to write to the file or the folder."; - - private final Logger logger = LogsCenter.getLogger(LogicManager.class); - - private final Model model; - private final Storage storage; - private final AddressBookParser addressBookParser; - - /** - * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}. - */ - public LogicManager(Model model, Storage storage) { - this.model = model; - this.storage = storage; - addressBookParser = new AddressBookParser(); - } - - @Override - public CommandResult execute(String commandText) throws CommandException, ParseException { - logger.info("----------------[USER COMMAND][" + commandText + "]"); - - CommandResult commandResult; - Command command = addressBookParser.parseCommand(commandText); - commandResult = command.execute(model); - - try { - storage.saveAddressBook(model.getAddressBook()); - } catch (AccessDeniedException e) { - throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e); - } catch (IOException ioe) { - throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe); - } - - return commandResult; - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - return model.getAddressBook(); - } - - @Override - public ObservableList getFilteredPersonList() { - return model.getFilteredPersonList(); - } - - @Override - public Path getAddressBookFilePath() { - return model.getAddressBookFilePath(); - } - - @Override - public GuiSettings getGuiSettings() { - return model.getGuiSettings(); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - model.setGuiSettings(guiSettings); - } -} diff --git a/src/main/java/seedu/address/logic/Messages.java b/src/main/java/seedu/address/logic/Messages.java deleted file mode 100644 index ecd32c31b53..00000000000 --- a/src/main/java/seedu/address/logic/Messages.java +++ /dev/null @@ -1,51 +0,0 @@ -package seedu.address.logic; - -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import seedu.address.logic.parser.Prefix; -import seedu.address.model.person.Person; - -/** - * Container for user visible messages. - */ -public class Messages { - - public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command"; - public static final String MESSAGE_INVALID_COMMAND_FORMAT = "Invalid command format! \n%1$s"; - public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid"; - public static final String MESSAGE_PERSONS_LISTED_OVERVIEW = "%1$d persons listed!"; - public static final String MESSAGE_DUPLICATE_FIELDS = - "Multiple values specified for the following single-valued field(s): "; - - /** - * Returns an error message indicating the duplicate prefixes. - */ - public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) { - assert duplicatePrefixes.length > 0; - - Set duplicateFields = - Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet()); - - return MESSAGE_DUPLICATE_FIELDS + String.join(" ", duplicateFields); - } - - /** - * Formats the {@code person} for display to the user. - */ - public static String format(Person person) { - final StringBuilder builder = new StringBuilder(); - builder.append(person.getName()) - .append("; Phone: ") - .append(person.getPhone()) - .append("; Email: ") - .append(person.getEmail()) - .append("; Address: ") - .append(person.getAddress()) - .append("; Tags: "); - person.getTags().forEach(builder::append); - return builder.toString(); - } - -} diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java deleted file mode 100644 index 0a541457326..00000000000 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ /dev/null @@ -1,85 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Person; - - -/** - * Adds a person to the address book. - */ -public class AddCommand extends Command { - - public static final String COMMAND_WORD = "add"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. " - + "Parameters: " - + PREFIX_NAME + " NAME " - + PREFIX_PHONE + " PHONE " - + PREFIX_EMAIL + " EMAIL " - + PREFIX_ADDRESS + " ADDRESS " - + "[" + PREFIX_TAG + "TAG]...\n" - + "Example: " + COMMAND_WORD + " " - + PREFIX_NAME + " John Doe " - + PREFIX_PHONE + " 98765432 " - + PREFIX_EMAIL + " johnd@example.com " - + PREFIX_ADDRESS + " 311, Clementi Ave 2, #02-25 " - + PREFIX_TAG + " friends " - + PREFIX_TAG + " owesMoney"; - - public static final String MESSAGE_SUCCESS = "New person added: %1$s"; - public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book"; - - private final Person toAdd; - - /** - * Creates an AddCommand to add the specified {@code Person} - */ - public AddCommand(Person person) { - requireNonNull(person); - toAdd = person; - } - - @Override - public CommandResult execute(Model model) throws CommandException { - requireNonNull(model); - - if (model.hasPerson(toAdd)) { - throw new CommandException(MESSAGE_DUPLICATE_PERSON); - } - - model.addPerson(toAdd); - return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd))); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof AddCommand)) { - return false; - } - - AddCommand otherAddCommand = (AddCommand) other; - return toAdd.equals(otherAddCommand.toAdd); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("toAdd", toAdd) - .toString(); - } -} diff --git a/src/main/java/seedu/address/logic/commands/AddStudentCommand.java b/src/main/java/seedu/address/logic/commands/AddStudentCommand.java deleted file mode 100644 index 0fce6e810c6..00000000000 --- a/src/main/java/seedu/address/logic/commands/AddStudentCommand.java +++ /dev/null @@ -1,93 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSES; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Student; - - - -/** - * Adds a student to the address book. - */ -public class AddStudentCommand extends Command { - - public static final String COMMAND_WORD = "student"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a student to the address book. " - + "Parameters: " - + PREFIX_NAME + "NAME " - + PREFIX_PHONE + "PHONE " - + PREFIX_EMAIL + "EMAIL " - + PREFIX_ADDRESS + "ADDRESS " - + PREFIX_SUBJECT + "SUBJECT " - + PREFIX_CLASSES + "CLASSES " - + "[" + PREFIX_TAG + "TAG]...\n" - + "Example: " + COMMAND_WORD + " " - + PREFIX_NAME + "John Doe " - + PREFIX_PHONE + "98765432 " - + PREFIX_EMAIL + "johnd@example.com " - + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 " - + PREFIX_SUBJECT + "Physics " - + PREFIX_CLASSES + "7A,7B " - + PREFIX_TAG + "hardworking"; - - public static final String MESSAGE_SUCCESS = "New student added: %1$s"; - public static final String MESSAGE_DUPLICATE_PERSON = - "This student already exists in the address book"; - - private final Student toAdd; - - /** - * Creates an AddStudentCommand to add the specified {@code Student} - */ - public AddStudentCommand(Student student) { - requireNonNull(student); - toAdd = student; - } - - @Override - public CommandResult execute(Model model) throws CommandException { - requireNonNull(model); - - // Check for duplicate students by comparing email, phone, etc. - if (model.hasPerson(toAdd)) { - throw new CommandException(MESSAGE_DUPLICATE_PERSON); - } - - // Add the student to the address book - model.addPerson(toAdd); - return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd))); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - if (!(other instanceof AddStudentCommand)) { - return false; - } - - AddStudentCommand otherAddCommand = (AddStudentCommand) other; - return toAdd.equals(otherAddCommand.toAdd); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("toAdd", toAdd) - .toString(); - } -} diff --git a/src/main/java/seedu/address/logic/commands/AddTeacherCommand.java b/src/main/java/seedu/address/logic/commands/AddTeacherCommand.java deleted file mode 100644 index 9690bcf64fd..00000000000 --- a/src/main/java/seedu/address/logic/commands/AddTeacherCommand.java +++ /dev/null @@ -1,92 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSES; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Teacher; - -/** - * Adds a teacher to the address book. - */ -public class AddTeacherCommand extends Command { - - public static final String COMMAND_WORD = "teacher"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a teacher to the address book. " - + "Parameters: " - + PREFIX_NAME + "NAME " - + PREFIX_GENDER + "GENDER " - + PREFIX_PHONE + "PHONE " - + PREFIX_EMAIL + "EMAIL " - + PREFIX_ADDRESS + "ADDRESS " - + PREFIX_SUBJECT + "SUBJECT " - + PREFIX_CLASSES + "CLASSES " - + "[" + PREFIX_TAG + "TAG]...\n" - + "Example: " + COMMAND_WORD + " " - + PREFIX_NAME + "John Doe " - + PREFIX_GENDER + "male " - + PREFIX_PHONE + "98765432 " - + PREFIX_EMAIL + "johnd@example.com " - + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 " - + PREFIX_SUBJECT + "Physics " - + PREFIX_CLASSES + "7A,7B " - + PREFIX_TAG + "hardworking"; - - public static final String MESSAGE_SUCCESS = "New teacher added: %1$s"; - public static final String MESSAGE_DUPLICATE_TEACHER = "This teacher already exists in the address book"; - - private final Teacher toAdd; - - /** - * Creates an AddTeacherCommand to add the specified {@code Teacher} - */ - public AddTeacherCommand(Teacher teacher) { - requireNonNull(teacher); - toAdd = teacher; - } - - @Override - public CommandResult execute(Model model) throws CommandException { - requireNonNull(model); - - if (model.hasPerson(toAdd)) { - throw new CommandException(MESSAGE_DUPLICATE_TEACHER); - } - - model.addPerson(toAdd); - return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd))); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof AddTeacherCommand)) { - return false; - } - - AddTeacherCommand otherAddTeacherCommand = (AddTeacherCommand) other; - return toAdd.equals(otherAddTeacherCommand.toAdd); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("toAdd", toAdd) - .toString(); - } -} diff --git a/src/main/java/seedu/address/logic/commands/ClearCommand.java b/src/main/java/seedu/address/logic/commands/ClearCommand.java deleted file mode 100644 index a391ab16f53..00000000000 --- a/src/main/java/seedu/address/logic/commands/ClearCommand.java +++ /dev/null @@ -1,44 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; - -import java.util.List; - -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.person.Person; -import seedu.address.model.person.PersonContainsKeywordsPredicate; - -/** - * Clears the address book. - */ -public class ClearCommand extends Command { - - public static final String COMMAND_WORD = "clear"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Clears all persons whose tags contain any of " - + "the specified tags and keywords (case-insensitive)\n" - + "Parameters: /TAG KEYWORD [/MORE_TAGS MORE_KEYWORDS]...\n" - + "Example: " + COMMAND_WORD + " /name John"; - - public static final String MESSAGE_SUCCESS = "EduConnect has been cleared of specified tags!"; - - private final PersonContainsKeywordsPredicate predicate; - - public ClearCommand(PersonContainsKeywordsPredicate predicate) { - this.predicate = predicate; - } - - @Override - public CommandResult execute(Model model) { - requireNonNull(model); - model.updateFilteredPersonList(x -> !predicate.test(x)); - List remainingPersons = model.getFilteredPersonList(); - - AddressBook newAddressBook = new AddressBook(); - newAddressBook.setPersons(remainingPersons); - - model.setAddressBook(newAddressBook); - return new CommandResult(MESSAGE_SUCCESS); - } -} diff --git a/src/main/java/seedu/address/logic/commands/Command.java b/src/main/java/seedu/address/logic/commands/Command.java deleted file mode 100644 index 64f18992160..00000000000 --- a/src/main/java/seedu/address/logic/commands/Command.java +++ /dev/null @@ -1,20 +0,0 @@ -package seedu.address.logic.commands; - -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; - -/** - * Represents a command with hidden internal logic and the ability to be executed. - */ -public abstract class Command { - - /** - * Executes the command and returns the result message. - * - * @param model {@code Model} which the command should operate on. - * @return feedback message of the operation result for display - * @throws CommandException If an error occurs during command execution. - */ - public abstract CommandResult execute(Model model) throws CommandException; - -} diff --git a/src/main/java/seedu/address/logic/commands/CommandResult.java b/src/main/java/seedu/address/logic/commands/CommandResult.java deleted file mode 100644 index 249b6072d0d..00000000000 --- a/src/main/java/seedu/address/logic/commands/CommandResult.java +++ /dev/null @@ -1,82 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; - -import java.util.Objects; - -import seedu.address.commons.util.ToStringBuilder; - -/** - * Represents the result of a command execution. - */ -public class CommandResult { - - private final String feedbackToUser; - - /** Help information should be shown to the user. */ - private final boolean showHelp; - - /** The application should exit. */ - private final boolean exit; - - /** - * Constructs a {@code CommandResult} with the specified fields. - */ - public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) { - this.feedbackToUser = requireNonNull(feedbackToUser); - this.showHelp = showHelp; - this.exit = exit; - } - - /** - * Constructs a {@code CommandResult} with the specified {@code feedbackToUser}, - * and other fields set to their default value. - */ - public CommandResult(String feedbackToUser) { - this(feedbackToUser, false, false); - } - - public String getFeedbackToUser() { - return feedbackToUser; - } - - public boolean isShowHelp() { - return showHelp; - } - - public boolean isExit() { - return exit; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof CommandResult)) { - return false; - } - - CommandResult otherCommandResult = (CommandResult) other; - return feedbackToUser.equals(otherCommandResult.feedbackToUser) - && showHelp == otherCommandResult.showHelp - && exit == otherCommandResult.exit; - } - - @Override - public int hashCode() { - return Objects.hash(feedbackToUser, showHelp, exit); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("feedbackToUser", feedbackToUser) - .add("showHelp", showHelp) - .add("exit", exit) - .toString(); - } - -} diff --git a/src/main/java/seedu/address/logic/commands/DeleteCommand.java b/src/main/java/seedu/address/logic/commands/DeleteCommand.java deleted file mode 100644 index 1135ac19b74..00000000000 --- a/src/main/java/seedu/address/logic/commands/DeleteCommand.java +++ /dev/null @@ -1,69 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; - -import java.util.List; - -import seedu.address.commons.core.index.Index; -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Person; - -/** - * Deletes a person identified using it's displayed index from the address book. - */ -public class DeleteCommand extends Command { - - public static final String COMMAND_WORD = "delete"; - - public static final String MESSAGE_USAGE = COMMAND_WORD - + ": Deletes the person identified by the index number used in the displayed person list.\n" - + "Parameters: INDEX (must be a positive integer)\n" - + "Example: " + COMMAND_WORD + " 1"; - - public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted Person: %1$s"; - - private final Index targetIndex; - - public DeleteCommand(Index targetIndex) { - this.targetIndex = targetIndex; - } - - @Override - public CommandResult execute(Model model) throws CommandException { - requireNonNull(model); - List lastShownList = model.getFilteredPersonList(); - - if (targetIndex.getZeroBased() >= lastShownList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - } - - Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); - model.deletePerson(personToDelete); - return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete))); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof DeleteCommand)) { - return false; - } - - DeleteCommand otherDeleteCommand = (DeleteCommand) other; - return targetIndex.equals(otherDeleteCommand.targetIndex); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("targetIndex", targetIndex) - .toString(); - } -} diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java deleted file mode 100644 index 4b581c7331e..00000000000 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ /dev/null @@ -1,242 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; - -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; - -import seedu.address.commons.core.index.Index; -import seedu.address.commons.util.CollectionUtil; -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.logic.Messages; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Edits the details of an existing person in the address book. - */ -public class EditCommand extends Command { - - public static final String COMMAND_WORD = "edit"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the person identified " - + "by the index number used in the displayed person list. " - + "Existing values will be overwritten by the input values.\n" - + "Parameters: INDEX (must be a positive integer) " - + "[" + PREFIX_NAME + "NAME] " - + "[" + PREFIX_PHONE + "PHONE] " - + "[" + PREFIX_EMAIL + "EMAIL] " - + "[" + PREFIX_ADDRESS + "ADDRESS] " - + "[" + PREFIX_TAG + "TAG]...\n" - + "Example: " + COMMAND_WORD + " 1 " - + PREFIX_PHONE + "91234567 " - + PREFIX_EMAIL + "johndoe@example.com"; - - public static final String MESSAGE_EDIT_PERSON_SUCCESS = "Edited Person: %1$s"; - public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided."; - public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book."; - - private final Index index; - private final EditPersonDescriptor editPersonDescriptor; - - /** - * @param index of the person in the filtered person list to edit - * @param editPersonDescriptor details to edit the person with - */ - public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) { - requireNonNull(index); - requireNonNull(editPersonDescriptor); - - this.index = index; - this.editPersonDescriptor = new EditPersonDescriptor(editPersonDescriptor); - } - - @Override - public CommandResult execute(Model model) throws CommandException { - requireNonNull(model); - List lastShownList = model.getFilteredPersonList(); - - if (index.getZeroBased() >= lastShownList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - } - - Person personToEdit = lastShownList.get(index.getZeroBased()); - Person editedPerson = createEditedPerson(personToEdit, editPersonDescriptor); - - if (!personToEdit.isSamePerson(editedPerson) && model.hasPerson(editedPerson)) { - throw new CommandException(MESSAGE_DUPLICATE_PERSON); - } - - model.setPerson(personToEdit, editedPerson); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson))); - } - - /** - * Creates and returns a {@code Person} with the details of {@code personToEdit} - * edited with {@code editPersonDescriptor}. - */ - private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) { - assert personToEdit != null; - - Name updatedName = editPersonDescriptor.getName().orElse(personToEdit.getName()); - Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone()); - Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail()); - Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress()); - Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); - - return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof EditCommand)) { - return false; - } - - EditCommand otherEditCommand = (EditCommand) other; - return index.equals(otherEditCommand.index) - && editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("index", index) - .add("editPersonDescriptor", editPersonDescriptor) - .toString(); - } - - /** - * Stores the details to edit the person with. Each non-empty field value will replace the - * corresponding field value of the person. - */ - public static class EditPersonDescriptor { - private Name name; - private Phone phone; - private Email email; - private Address address; - private Set tags; - - public EditPersonDescriptor() {} - - /** - * Copy constructor. - * A defensive copy of {@code tags} is used internally. - */ - public EditPersonDescriptor(EditPersonDescriptor toCopy) { - setName(toCopy.name); - setPhone(toCopy.phone); - setEmail(toCopy.email); - setAddress(toCopy.address); - setTags(toCopy.tags); - } - - /** - * Returns true if at least one field is edited. - */ - public boolean isAnyFieldEdited() { - return CollectionUtil.isAnyNonNull(name, phone, email, address, tags); - } - - public void setName(Name name) { - this.name = name; - } - - public Optional getName() { - return Optional.ofNullable(name); - } - - public void setPhone(Phone phone) { - this.phone = phone; - } - - public Optional getPhone() { - return Optional.ofNullable(phone); - } - - public void setEmail(Email email) { - this.email = email; - } - - public Optional getEmail() { - return Optional.ofNullable(email); - } - - public void setAddress(Address address) { - this.address = address; - } - - public Optional
    getAddress() { - return Optional.ofNullable(address); - } - - /** - * Sets {@code tags} to this object's {@code tags}. - * A defensive copy of {@code tags} is used internally. - */ - public void setTags(Set tags) { - this.tags = (tags != null) ? new HashSet<>(tags) : null; - } - - /** - * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException} - * if modification is attempted. - * Returns {@code Optional#empty()} if {@code tags} is null. - */ - public Optional> getTags() { - return (tags != null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty(); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof EditPersonDescriptor)) { - return false; - } - - EditPersonDescriptor otherEditPersonDescriptor = (EditPersonDescriptor) other; - return Objects.equals(name, otherEditPersonDescriptor.name) - && Objects.equals(phone, otherEditPersonDescriptor.phone) - && Objects.equals(email, otherEditPersonDescriptor.email) - && Objects.equals(address, otherEditPersonDescriptor.address) - && Objects.equals(tags, otherEditPersonDescriptor.tags); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("name", name) - .add("phone", phone) - .add("email", email) - .add("address", address) - .add("tags", tags) - .toString(); - } - } -} diff --git a/src/main/java/seedu/address/logic/commands/ExitCommand.java b/src/main/java/seedu/address/logic/commands/ExitCommand.java deleted file mode 100644 index 3dd85a8ba90..00000000000 --- a/src/main/java/seedu/address/logic/commands/ExitCommand.java +++ /dev/null @@ -1,19 +0,0 @@ -package seedu.address.logic.commands; - -import seedu.address.model.Model; - -/** - * Terminates the program. - */ -public class ExitCommand extends Command { - - public static final String COMMAND_WORD = "exit"; - - public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT = "Exiting Address Book as requested ..."; - - @Override - public CommandResult execute(Model model) { - return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true); - } - -} diff --git a/src/main/java/seedu/address/logic/commands/FindCommand.java b/src/main/java/seedu/address/logic/commands/FindCommand.java deleted file mode 100644 index 7f10f8d386a..00000000000 --- a/src/main/java/seedu/address/logic/commands/FindCommand.java +++ /dev/null @@ -1,59 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.model.Model; -import seedu.address.model.person.PersonContainsKeywordsPredicate; - -/** - * Finds and lists all persons in address book whose name contains any of the argument keywords. - * Keyword matching is case-insensitive. - */ -public class FindCommand extends Command { - - public static final String COMMAND_WORD = "find"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all persons whose tags contain any of " - + "the specified tags and keywords (case-insensitive)\n" - + "Parameters: /TAG KEYWORD [/MORE_TAGS MORE_KEYWORDS]...\n" - + "Example: " + COMMAND_WORD + " /name John"; - - public static final String MESSAGE_SUCCESS = "Found the required people!"; - - private final PersonContainsKeywordsPredicate predicate; - - // TODO : Add functionality so that we can group multiple tags at once - public FindCommand(PersonContainsKeywordsPredicate predicate) { - this.predicate = predicate; - } - - @Override - public CommandResult execute(Model model) { - requireNonNull(model); - model.updateFilteredPersonList(predicate); - return new CommandResult(MESSAGE_SUCCESS); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof FindCommand)) { - return false; - } - - FindCommand otherFindCommand = (FindCommand) other; - return predicate.equals(otherFindCommand.predicate); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("predicate", predicate) - .toString(); - } -} diff --git a/src/main/java/seedu/address/logic/commands/HelpCommand.java b/src/main/java/seedu/address/logic/commands/HelpCommand.java deleted file mode 100644 index bf824f91bd0..00000000000 --- a/src/main/java/seedu/address/logic/commands/HelpCommand.java +++ /dev/null @@ -1,21 +0,0 @@ -package seedu.address.logic.commands; - -import seedu.address.model.Model; - -/** - * Format full help instructions for every command for display. - */ -public class HelpCommand extends Command { - - public static final String COMMAND_WORD = "help"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Shows program usage instructions.\n" - + "Example: " + COMMAND_WORD; - - public static final String SHOWING_HELP_MESSAGE = "Opened help window."; - - @Override - public CommandResult execute(Model model) { - return new CommandResult(SHOWING_HELP_MESSAGE, true, false); - } -} diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java deleted file mode 100644 index 84be6ad2596..00000000000 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ /dev/null @@ -1,24 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; - -import seedu.address.model.Model; - -/** - * Lists all persons in the address book to the user. - */ -public class ListCommand extends Command { - - public static final String COMMAND_WORD = "list"; - - public static final String MESSAGE_SUCCESS = "Listed all persons"; - - - @Override - public CommandResult execute(Model model) { - requireNonNull(model); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - return new CommandResult(MESSAGE_SUCCESS); - } -} diff --git a/src/main/java/seedu/address/logic/commands/SortCommand.java b/src/main/java/seedu/address/logic/commands/SortCommand.java deleted file mode 100644 index e2c380b0aac..00000000000 --- a/src/main/java/seedu/address/logic/commands/SortCommand.java +++ /dev/null @@ -1,52 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; - -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Person; - -/** - * Sorts the list of persons in the address book based on a specified parameter. - */ -public class SortCommand extends Command { - - public static final String COMMAND_WORD = "sort"; - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Sorts the list of persons by the specified parameter. " - + "Parameters: name/subject/classes\n" - + "Example: " + COMMAND_WORD + " name"; - - private final Comparator comparator; - - public SortCommand(Comparator comparator) { - this.comparator = comparator; - } - - @Override - public CommandResult execute(Model model) throws CommandException { - requireNonNull(model); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - List sortedList = new ArrayList<>(model.getFilteredPersonList()); - sortedList.sort((Comparator) comparator); - model.setFilteredPersonList(sortedList); - return new CommandResult("List sorted successfully."); - } - - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (!(other instanceof SortCommand)) { - return false; - } - SortCommand otherCommand = (SortCommand) other; - return true; - } - -} diff --git a/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java b/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java deleted file mode 100644 index a16bd14f2cd..00000000000 --- a/src/main/java/seedu/address/logic/commands/exceptions/CommandException.java +++ /dev/null @@ -1,17 +0,0 @@ -package seedu.address.logic.commands.exceptions; - -/** - * Represents an error which occurs during execution of a {@link Command}. - */ -public class CommandException extends Exception { - public CommandException(String message) { - super(message); - } - - /** - * Constructs a new {@code CommandException} with the specified detail {@code message} and {@code cause}. - */ - public CommandException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java deleted file mode 100644 index 4ff1a97ed77..00000000000 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ /dev/null @@ -1,61 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Set; -import java.util.stream.Stream; - -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Parses input arguments and creates a new AddCommand object - */ -public class AddCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the AddCommand - * and returns an AddCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public AddCommand parse(String args) throws ParseException { - ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); - - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) - || !argMultimap.getPreamble().isEmpty()) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); - } - - argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS); - Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); - Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); - Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); - Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); - Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - - Person person = new Person(name, phone, email, address, tagList); - - return new AddCommand(person); - } - - /** - * Returns true if none of the prefixes contains empty {@code Optional} values in the given - * {@code ArgumentMultimap}. - */ - private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { - return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); - } - -} diff --git a/src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java b/src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java deleted file mode 100644 index f4359e24e5b..00000000000 --- a/src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java +++ /dev/null @@ -1,105 +0,0 @@ -package seedu.address.logic.parser; - - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSES; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.HashSet; -import java.util.Set; -import java.util.stream.Stream; - -import seedu.address.logic.commands.AddStudentCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.person.Student; -import seedu.address.model.person.Subject; -import seedu.address.model.tag.Tag; - - -/** - * Parses input arguments and creates a new AddStudentCommand object - */ -public class AddStudentCommandParser implements Parser { - - private static final String CLASS_NAME_VALIDATION_REGEX = "[A-Za-z0-9]+"; - private static final String MESSAGE_INVALID_CLASS = "Classes should be valid!"; - - /** - * Parses the given {@code String} of arguments in the context of the AddStudentCommand - * and returns an AddStudentCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public AddStudentCommand parse(String args) throws ParseException { - ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG, - PREFIX_SUBJECT, PREFIX_CLASSES); - - // Ensure all required prefixes are present - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL, - PREFIX_SUBJECT, PREFIX_CLASSES) || !argMultimap.getPreamble().isEmpty()) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE)); - } - - // Parse individual components - Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); - Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); - Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); - Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); - Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - Subject subject = ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get()); - Set classes = parseClasses(argMultimap.getValue(PREFIX_CLASSES).get()); - - // Create the Student object - Student student = new Student(name, phone, email, address, tagList, subject, classes); - - return new AddStudentCommand(student); - } - - /** - * Returns true if none of the prefixes contains empty {@code Optional} values in the given - * {@code ArgumentMultimap}. - */ - private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { - return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); - } - - /** - * Parses the classes string (comma-separated) and returns a set of class names. - */ - private Set parseClasses(String classes) throws ParseException { - requireNonNull(classes); - - Set classSet = new HashSet<>(); - String[] classArray = classes.split(","); - - for (String className : classArray) { - String trimmedClassName = className.trim(); // Trim to remove unnecessary spaces - - // Validate each class name - if (!isValidClassName(trimmedClassName)) { - throw new ParseException(MESSAGE_INVALID_CLASS); - } - - classSet.add(trimmedClassName); - } - - return classSet; - } - - /** - * Validates a class name. - */ - private boolean isValidClassName(String className) { - return className.matches(CLASS_NAME_VALIDATION_REGEX); - } -} diff --git a/src/main/java/seedu/address/logic/parser/AddTeacherCommandParser.java b/src/main/java/seedu/address/logic/parser/AddTeacherCommandParser.java deleted file mode 100644 index 1387d0ffbe5..00000000000 --- a/src/main/java/seedu/address/logic/parser/AddTeacherCommandParser.java +++ /dev/null @@ -1,71 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_CLASSES; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_GENDER; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_SUBJECT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Set; -import java.util.stream.Stream; - -import seedu.address.logic.commands.AddTeacherCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Gender; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.person.Subject; -import seedu.address.model.person.Teacher; -import seedu.address.model.tag.Tag; - -/** - * Parses input arguments and creates a new AddTeacherCommand object - */ -public class AddTeacherCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the AddTeacherCommand - * and returns an AddTeacherCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public AddTeacherCommand parse(String args) throws ParseException { - ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_GENDER, PREFIX_PHONE, PREFIX_EMAIL, - PREFIX_ADDRESS, PREFIX_TAG, PREFIX_SUBJECT, PREFIX_CLASSES); - - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_GENDER, PREFIX_PHONE, - PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_SUBJECT, PREFIX_CLASSES) - || !argMultimap.getPreamble().isEmpty()) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTeacherCommand.MESSAGE_USAGE)); - } - - argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, - PREFIX_ADDRESS, PREFIX_GENDER); - Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); - Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); - Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); - Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); - Gender gender = ParserUtil.parseGender(argMultimap.getValue(PREFIX_GENDER).get()); - Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); - Subject subject = ParserUtil.parseSubject(argMultimap.getValue(PREFIX_SUBJECT).get()); - Set classes = ParserUtil.parseClasses(argMultimap.getValue(PREFIX_CLASSES).get()); - - Teacher teacher = new Teacher(name, gender, phone, email, address, tagList, subject, classes); - - return new AddTeacherCommand(teacher); - } - - /** - * Returns true if none of the prefixes contains empty {@code Optional} values in the given - * {@code ArgumentMultimap}. - */ - private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { - return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); - } -} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java deleted file mode 100644 index c7c761f5fd0..00000000000 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ /dev/null @@ -1,98 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND; - -import java.util.logging.Logger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.AddStudentCommand; -import seedu.address.logic.commands.AddTeacherCommand; -import seedu.address.logic.commands.ClearCommand; -import seedu.address.logic.commands.Command; -import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.ExitCommand; -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.commands.HelpCommand; -import seedu.address.logic.commands.ListCommand; -import seedu.address.logic.commands.SortCommand; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * Parses user input. - */ -public class AddressBookParser { - - /** - * Used for initial separation of command word and args. - */ - private static final Pattern BASIC_COMMAND_FORMAT = Pattern.compile("(?\\S+)(?.*)"); - private static final Logger logger = LogsCenter.getLogger(AddressBookParser.class); - - /** - * Parses user input into command for execution. - * - * @param userInput full user input string - * @return the command based on the user input - * @throws ParseException if the user input does not conform the expected format - */ - public Command parseCommand(String userInput) throws ParseException { - final Matcher matcher = BASIC_COMMAND_FORMAT.matcher(userInput.trim()); - if (!matcher.matches()) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE)); - } - - final String commandWord = matcher.group("commandWord"); - final String arguments = matcher.group("arguments"); - - // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower) - // log messages such as the one below. - // Lower level log messages are used sparingly to minimize noise in the code. - logger.fine("Command word: " + commandWord + "; Arguments: " + arguments); - - switch (commandWord) { - - case AddCommand.COMMAND_WORD: - return new AddCommandParser().parse(arguments); - - case EditCommand.COMMAND_WORD: - return new EditCommandParser().parse(arguments); - - case DeleteCommand.COMMAND_WORD: - return new DeleteCommandParser().parse(arguments); - - case ClearCommand.COMMAND_WORD: - return new ClearCommandParser().parse(arguments); - - case FindCommand.COMMAND_WORD: - return new FindCommandParser().parse(arguments); - - case AddTeacherCommand.COMMAND_WORD: - return new AddTeacherCommandParser().parse(arguments); - - case ListCommand.COMMAND_WORD: - return new ListCommand(); - - case ExitCommand.COMMAND_WORD: - return new ExitCommand(); - - case HelpCommand.COMMAND_WORD: - return new HelpCommand(); - - case AddStudentCommand.COMMAND_WORD: - return new AddStudentCommandParser().parse(arguments); - - case SortCommand.COMMAND_WORD: - return new SortCommandParser().parse(arguments); - - default: - logger.finer("This user input caused a ParseException: " + userInput); - throw new ParseException(MESSAGE_UNKNOWN_COMMAND); - } - } - -} diff --git a/src/main/java/seedu/address/logic/parser/ArgumentMultimap.java b/src/main/java/seedu/address/logic/parser/ArgumentMultimap.java deleted file mode 100644 index 21e26887a83..00000000000 --- a/src/main/java/seedu/address/logic/parser/ArgumentMultimap.java +++ /dev/null @@ -1,78 +0,0 @@ -package seedu.address.logic.parser; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Stream; - -import seedu.address.logic.Messages; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * Stores mapping of prefixes to their respective arguments. - * Each key may be associated with multiple argument values. - * Values for a given key are stored in a list, and the insertion ordering is maintained. - * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value - * can be inserted multiple times for the same prefix. - */ -public class ArgumentMultimap { - - /** Prefixes mapped to their respective arguments**/ - private final Map> argMultimap = new HashMap<>(); - - /** - * Associates the specified argument value with {@code prefix} key in this map. - * If the map previously contained a mapping for the key, the new value is appended to the list of existing values. - * - * @param prefix Prefix key with which the specified argument value is to be associated - * @param argValue Argument value to be associated with the specified prefix key - */ - public void put(Prefix prefix, String argValue) { - List argValues = getAllValues(prefix); - argValues.add(argValue); - argMultimap.put(prefix, argValues); - } - - /** - * Returns the last value of {@code prefix}. - */ - public Optional getValue(Prefix prefix) { - List values = getAllValues(prefix); - return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1)); - } - - /** - * Returns all values of {@code prefix}. - * If the prefix does not exist or has no values, this will return an empty list. - * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap. - */ - public List getAllValues(Prefix prefix) { - if (!argMultimap.containsKey(prefix)) { - return new ArrayList<>(); - } - return new ArrayList<>(argMultimap.get(prefix)); - } - - /** - * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces. - */ - public String getPreamble() { - return getValue(new Prefix("")).orElse(""); - } - - /** - * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than - * once among the arguments. - */ - public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException { - Prefix[] duplicatedPrefixes = Stream.of(prefixes).distinct() - .filter(prefix -> argMultimap.containsKey(prefix) && argMultimap.get(prefix).size() > 1) - .toArray(Prefix[]::new); - - if (duplicatedPrefixes.length > 0) { - throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes)); - } - } -} diff --git a/src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java b/src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java deleted file mode 100644 index 5c9aebfa488..00000000000 --- a/src/main/java/seedu/address/logic/parser/ArgumentTokenizer.java +++ /dev/null @@ -1,148 +0,0 @@ -package seedu.address.logic.parser; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Tokenizes arguments string of the form: {@code preamble value value ...}
    - * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.
    - * 1. An argument's value can be an empty string e.g. the value of {@code k/} in the above example.
    - * 2. Leading and trailing whitespaces of an argument value will be discarded.
    - * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/} - * in the above example.
    - */ -public class ArgumentTokenizer { - - /** - * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their - * respective argument values. Only the given prefixes will be recognized in the arguments string. - * - * @param argsString Arguments string of the form: {@code preamble value value ...} - * @param prefixes Prefixes to tokenize the arguments string with - * @return ArgumentMultimap object that maps prefixes to their arguments - */ - public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) { - List positions = findAllPrefixPositions(argsString, prefixes); - return extractArguments(argsString, positions); - } - - /** - * Finds all zero-based prefix positions in the given arguments string. - * - * @param argsString Arguments string of the form: {@code preamble value value ...} - * @param prefixes Prefixes to find in the arguments string - * @return List of zero-based prefix positions in the given arguments string - */ - private static List findAllPrefixPositions(String argsString, Prefix... prefixes) { - return Arrays.stream(prefixes) - .flatMap(prefix -> findPrefixPositions(argsString, prefix).stream()) - .collect(Collectors.toList()); - } - - /** - * {@see findAllPrefixPositions} - */ - private static List findPrefixPositions(String argsString, Prefix prefix) { - List positions = new ArrayList<>(); - - int prefixPosition = findPrefixPosition(argsString, prefix.getPrefix(), 0); - while (prefixPosition != -1) { - PrefixPosition extendedPrefix = new PrefixPosition(prefix, prefixPosition); - positions.add(extendedPrefix); - prefixPosition = findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition); - } - - return positions; - } - - /** - * Returns the index of the first occurrence of {@code prefix} in - * {@code argsString} starting from index {@code fromIndex}. An occurrence - * is valid if there is a whitespace before {@code prefix}. Returns -1 if no - * such occurrence can be found. - * - * E.g if {@code argsString} = "e/hip/900", {@code prefix} = "p/" and - * {@code fromIndex} = 0, this method returns -1 as there are no valid - * occurrences of "p/" with whitespace before it. However, if - * {@code argsString} = "e/hi p/900", {@code prefix} = "p/" and - * {@code fromIndex} = 0, this method returns 5. - */ - private static int findPrefixPosition(String argsString, String prefix, int fromIndex) { - int prefixIndex = argsString.indexOf(" " + prefix, fromIndex); - return prefixIndex == -1 ? -1 - : prefixIndex + 1; // +1 as offset for whitespace - } - - /** - * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the - * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in - * {@code argsString}. - * - * @param argsString Arguments string of the form: {@code preamble value value ...} - * @param prefixPositions Zero-based positions of all prefixes in {@code argsString} - * @return ArgumentMultimap object that maps prefixes to their arguments - */ - private static ArgumentMultimap extractArguments(String argsString, List prefixPositions) { - - // Sort by start position - prefixPositions.sort((prefix1, prefix2) -> prefix1.getStartPosition() - prefix2.getStartPosition()); - - // Insert a PrefixPosition to represent the preamble - PrefixPosition preambleMarker = new PrefixPosition(new Prefix(""), 0); - prefixPositions.add(0, preambleMarker); - - // Add a dummy PrefixPosition to represent the end of the string - PrefixPosition endPositionMarker = new PrefixPosition(new Prefix(""), argsString.length()); - prefixPositions.add(endPositionMarker); - - // Map prefixes to their argument values (if any) - ArgumentMultimap argMultimap = new ArgumentMultimap(); - for (int i = 0; i < prefixPositions.size() - 1; i++) { - // Extract and store prefixes and their arguments - Prefix argPrefix = prefixPositions.get(i).getPrefix(); - String argValue = extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1)); - argMultimap.put(argPrefix, argValue); - } - - return argMultimap; - } - - /** - * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}. - * The end position of the value is determined by {@code nextPrefixPosition}. - */ - private static String extractArgumentValue(String argsString, - PrefixPosition currentPrefixPosition, - PrefixPosition nextPrefixPosition) { - Prefix prefix = currentPrefixPosition.getPrefix(); - - int valueStartPos = currentPrefixPosition.getStartPosition() + prefix.getPrefix().length(); - String value = argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition()); - - return value.trim(); - } - - /** - * Represents a prefix's position in an arguments string. - */ - private static class PrefixPosition { - private int startPosition; - private final Prefix prefix; - - PrefixPosition(Prefix prefix, int startPosition) { - this.prefix = prefix; - this.startPosition = startPosition; - } - - int getStartPosition() { - return startPosition; - } - - Prefix getPrefix() { - return prefix; - } - } - -} diff --git a/src/main/java/seedu/address/logic/parser/ClearCommandParser.java b/src/main/java/seedu/address/logic/parser/ClearCommandParser.java deleted file mode 100644 index 4273648e303..00000000000 --- a/src/main/java/seedu/address/logic/parser/ClearCommandParser.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; - -import java.util.Arrays; - -import seedu.address.logic.commands.ClearCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.PersonContainsKeywordsPredicate; - - -/** - * Parses input arguments and creates a new ClearCommand object - */ -public class ClearCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the ClearCommand - * and returns a ClearCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public ClearCommand parse(String args) throws ParseException { - String trimmedArgs = args.trim(); - String[] nameKeywords = trimmedArgs.split("\\s+"); - - - try { - PersonContainsKeywordsPredicate predicate = - new PersonContainsKeywordsPredicate(Arrays.asList(nameKeywords)); - return new ClearCommand(predicate); - } catch (ParseException e) { - throw new ParseException( - String.format(MESSAGE_INVALID_COMMAND_FORMAT, ClearCommand.MESSAGE_USAGE)); - } - } -} diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java deleted file mode 100644 index 7ce60263636..00000000000 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ /dev/null @@ -1,18 +0,0 @@ -package seedu.address.logic.parser; - -/** - * Contains Command Line Interface (CLI) syntax definitions common to multiple commands - */ -public class CliSyntax { - - /* Prefix definitions */ - public static final Prefix PREFIX_NAME = new Prefix("/name"); - public static final Prefix PREFIX_GENDER = new Prefix("/gender"); - public static final Prefix PREFIX_PHONE = new Prefix("/contact"); - public static final Prefix PREFIX_EMAIL = new Prefix("/email"); - public static final Prefix PREFIX_ADDRESS = new Prefix("/address"); - public static final Prefix PREFIX_TAG = new Prefix("t/"); - public static final Prefix PREFIX_SUBJECT = new Prefix("/subject"); - public static final Prefix PREFIX_CLASSES = new Prefix("/classes"); - -} diff --git a/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java b/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java deleted file mode 100644 index 3527fe76a3e..00000000000 --- a/src/main/java/seedu/address/logic/parser/DeleteCommandParser.java +++ /dev/null @@ -1,29 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; - -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * Parses input arguments and creates a new DeleteCommand object - */ -public class DeleteCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the DeleteCommand - * and returns a DeleteCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public DeleteCommand parse(String args) throws ParseException { - try { - Index index = ParserUtil.parseIndex(args); - return new DeleteCommand(index); - } catch (ParseException pe) { - throw new ParseException( - String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe); - } - } - -} diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/address/logic/parser/EditCommandParser.java deleted file mode 100644 index 46b3309a78b..00000000000 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ /dev/null @@ -1,85 +0,0 @@ -package seedu.address.logic.parser; - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Collection; -import java.util.Collections; -import java.util.Optional; -import java.util.Set; - -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.tag.Tag; - -/** - * Parses input arguments and creates a new EditCommand object - */ -public class EditCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the EditCommand - * and returns an EditCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public EditCommand parse(String args) throws ParseException { - requireNonNull(args); - ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); - - Index index; - - try { - index = ParserUtil.parseIndex(argMultimap.getPreamble()); - } catch (ParseException pe) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe); - } - - argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS); - - EditPersonDescriptor editPersonDescriptor = new EditPersonDescriptor(); - - if (argMultimap.getValue(PREFIX_NAME).isPresent()) { - editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get())); - } - if (argMultimap.getValue(PREFIX_PHONE).isPresent()) { - editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())); - } - if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) { - editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())); - } - if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) { - editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())); - } - parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags); - - if (!editPersonDescriptor.isAnyFieldEdited()) { - throw new ParseException(EditCommand.MESSAGE_NOT_EDITED); - } - - return new EditCommand(index, editPersonDescriptor); - } - - /** - * Parses {@code Collection tags} into a {@code Set} if {@code tags} is non-empty. - * If {@code tags} contain only one element which is an empty string, it will be parsed into a - * {@code Set} containing zero tags. - */ - private Optional> parseTagsForEdit(Collection tags) throws ParseException { - assert tags != null; - - if (tags.isEmpty()) { - return Optional.empty(); - } - Collection tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags; - return Optional.of(ParserUtil.parseTags(tagSet)); - } - -} diff --git a/src/main/java/seedu/address/logic/parser/FindCommandParser.java b/src/main/java/seedu/address/logic/parser/FindCommandParser.java deleted file mode 100644 index 508f2dd29d2..00000000000 --- a/src/main/java/seedu/address/logic/parser/FindCommandParser.java +++ /dev/null @@ -1,40 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; - -import java.util.Arrays; - -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.PersonContainsKeywordsPredicate; - -/** - * Parses input arguments and creates a new FindCommand object - */ -public class FindCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the FindCommand - * and returns a FindCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public FindCommand parse(String args) throws ParseException { - String trimmedArgs = args.trim(); - if (trimmedArgs.isEmpty()) { - throw new ParseException( - String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE)); - } - - String[] nameKeywords = trimmedArgs.split("\\s+"); - try { - PersonContainsKeywordsPredicate predicate = - new PersonContainsKeywordsPredicate(Arrays.asList(nameKeywords)); - return new FindCommand(predicate); - } catch (ParseException e) { - throw new ParseException( - String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE)); - } - - } - -} diff --git a/src/main/java/seedu/address/logic/parser/Parser.java b/src/main/java/seedu/address/logic/parser/Parser.java deleted file mode 100644 index d6551ad8e3f..00000000000 --- a/src/main/java/seedu/address/logic/parser/Parser.java +++ /dev/null @@ -1,16 +0,0 @@ -package seedu.address.logic.parser; - -import seedu.address.logic.commands.Command; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}. - */ -public interface Parser { - - /** - * Parses {@code userInput} into a command and returns it. - * @throws ParseException if {@code userInput} does not conform the expected format - */ - T parse(String userInput) throws ParseException; -} diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java deleted file mode 100644 index 5595e053e21..00000000000 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ /dev/null @@ -1,180 +0,0 @@ -package seedu.address.logic.parser; - -import static java.util.Objects.requireNonNull; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import seedu.address.commons.core.index.Index; -import seedu.address.commons.util.StringUtil; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Gender; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.person.Subject; -import seedu.address.model.tag.Tag; - -/** - * Contains utility methods used for parsing strings in the various *Parser classes. - */ -public class ParserUtil { - - public static final String MESSAGE_INVALID_INDEX = "Index is not a non-zero unsigned integer."; - - /** - * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be - * trimmed. - * @throws ParseException if the specified index is invalid (not non-zero unsigned integer). - */ - public static Index parseIndex(String oneBasedIndex) throws ParseException { - String trimmedIndex = oneBasedIndex.trim(); - if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) { - throw new ParseException(MESSAGE_INVALID_INDEX); - } - return Index.fromOneBased(Integer.parseInt(trimmedIndex)); - } - - /** - * Parses a {@code String name} into a {@code Name}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code name} is invalid. - */ - public static Name parseName(String name) throws ParseException { - requireNonNull(name); - String trimmedName = name.trim(); - if (!Name.isValidName(trimmedName)) { - throw new ParseException(Name.MESSAGE_CONSTRAINTS); - } - return new Name(trimmedName); - } - - /** - * Parses a {@code String gender} into a {@code Gender}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code gender} is invalid. - */ - public static Gender parseGender(String gender) throws ParseException { - requireNonNull(gender); - String trimmedGender = gender.trim(); - if (!Gender.isValidGender(trimmedGender)) { - throw new ParseException(Gender.MESSAGE_CONSTRAINTS); - } - return new Gender(trimmedGender); - } - - /** - * Parses a {@code String phone} into a {@code Phone}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code phone} is invalid. - */ - public static Phone parsePhone(String phone) throws ParseException { - requireNonNull(phone); - String trimmedPhone = phone.trim(); - if (!Phone.isValidPhone(trimmedPhone)) { - throw new ParseException(Phone.MESSAGE_CONSTRAINTS); - } - return new Phone(trimmedPhone); - } - - /** - * Parses a {@code String address} into an {@code Address}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code address} is invalid. - */ - public static Address parseAddress(String address) throws ParseException { - requireNonNull(address); - String trimmedAddress = address.trim(); - if (!Address.isValidAddress(trimmedAddress)) { - throw new ParseException(Address.MESSAGE_CONSTRAINTS); - } - return new Address(trimmedAddress); - } - - /** - * Parses a {@code String email} into an {@code Email}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code email} is invalid. - */ - public static Email parseEmail(String email) throws ParseException { - requireNonNull(email); - String trimmedEmail = email.trim(); - if (!Email.isValidEmail(trimmedEmail)) { - throw new ParseException(Email.MESSAGE_CONSTRAINTS); - } - return new Email(trimmedEmail); - } - - /** - * Parses a {@code String subject} into a {@code Subject}. - * Leading and trailing whitespaces will be trimmed. - * - * @param subject the input string representing the subject to be parsed - * @return a {@code Subject} object if the input is valid - * @throws ParseException if the given {@code subject} is invalid according to {@code Subject}'s constraints - */ - public static Subject parseSubject(String subject) throws ParseException { - requireNonNull(subject); - String trimmedSubject = subject.trim(); - if (!Subject.isValidSubject(trimmedSubject)) { - throw new ParseException(Subject.MESSAGE_CONSTRAINTS); - } - return new Subject(trimmedSubject); - } - - - - /** - * Parses a {@code String tag} into a {@code Tag}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code tag} is invalid. - */ - public static Tag parseTag(String tag) throws ParseException { - requireNonNull(tag); - String trimmedTag = tag.trim(); - if (!Tag.isValidTagName(trimmedTag)) { - throw new ParseException(Tag.MESSAGE_CONSTRAINTS); - } - return new Tag(trimmedTag); - } - - /** - * Parses {@code Collection tags} into a {@code Set}. - */ - public static Set parseTags(Collection tags) throws ParseException { - requireNonNull(tags); - final Set tagSet = new HashSet<>(); - for (String tagName : tags) { - tagSet.add(parseTag(tagName)); - } - return tagSet; - } - - /** - * Parses a {@code String classes} into a {@code Set}. - * Leading and trailing whitespaces will be trimmed. - * - * @throws ParseException if the given {@code classes} is invalid. - */ - public static Set parseClasses(String classes) throws ParseException { - requireNonNull(classes); - String trimmedClasses = classes.trim(); - if (trimmedClasses.isEmpty()) { - throw new ParseException("Classes cannot be empty."); - } - String[] classArray = trimmedClasses.split(","); - Set classSet = new HashSet<>(); - for (String className : classArray) { - classSet.add(className.trim()); - } - return classSet; - } -} diff --git a/src/main/java/seedu/address/logic/parser/Prefix.java b/src/main/java/seedu/address/logic/parser/Prefix.java deleted file mode 100644 index 348b7686c8a..00000000000 --- a/src/main/java/seedu/address/logic/parser/Prefix.java +++ /dev/null @@ -1,42 +0,0 @@ -package seedu.address.logic.parser; - -/** - * A prefix that marks the beginning of an argument in an arguments string. - * E.g. 't/' in 'add James t/ friend'. - */ -public class Prefix { - private final String prefix; - - public Prefix(String prefix) { - this.prefix = prefix; - } - - public String getPrefix() { - return prefix; - } - - @Override - public String toString() { - return getPrefix(); - } - - @Override - public int hashCode() { - return prefix == null ? 0 : prefix.hashCode(); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Prefix)) { - return false; - } - - Prefix otherPrefix = (Prefix) other; - return prefix.equals(otherPrefix.prefix); - } -} diff --git a/src/main/java/seedu/address/logic/parser/SortCommandParser.java b/src/main/java/seedu/address/logic/parser/SortCommandParser.java deleted file mode 100644 index 15539918204..00000000000 --- a/src/main/java/seedu/address/logic/parser/SortCommandParser.java +++ /dev/null @@ -1,26 +0,0 @@ -package seedu.address.logic.parser; - -import java.util.Comparator; - -import seedu.address.logic.commands.SortCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Person; - -/** - * Parses input arguments to create a new {@code SortCommand}. - */ -public class SortCommandParser implements Parser { - - @Override - public SortCommand parse(String args) throws ParseException { - String trimmedArgs = args.trim(); - Comparator comparator; - - switch (trimmedArgs) { - case "name" -> comparator = Comparator.comparing(Person::getNameString); - default -> throw new ParseException(SortCommand.MESSAGE_USAGE); - } - - return new SortCommand(comparator); - } -} diff --git a/src/main/java/seedu/address/logic/parser/exceptions/ParseException.java b/src/main/java/seedu/address/logic/parser/exceptions/ParseException.java deleted file mode 100644 index 158a1a54c1c..00000000000 --- a/src/main/java/seedu/address/logic/parser/exceptions/ParseException.java +++ /dev/null @@ -1,17 +0,0 @@ -package seedu.address.logic.parser.exceptions; - -import seedu.address.commons.exceptions.IllegalValueException; - -/** - * Represents a parse error encountered by a parser. - */ -public class ParseException extends IllegalValueException { - - public ParseException(String message) { - super(message); - } - - public ParseException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/src/main/java/seedu/address/model/AddressBook.java b/src/main/java/seedu/address/model/AddressBook.java deleted file mode 100644 index 13fdbdff00e..00000000000 --- a/src/main/java/seedu/address/model/AddressBook.java +++ /dev/null @@ -1,143 +0,0 @@ -package seedu.address.model; - -import static java.util.Objects.requireNonNull; - -import java.util.List; - -import javafx.collections.ObservableList; -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.model.person.Person; -import seedu.address.model.person.Teacher; -import seedu.address.model.person.UniquePersonList; - -/** - * Wraps all data at the address-book level - * Duplicates are not allowed (by .isSamePerson comparison) - */ -public class AddressBook implements ReadOnlyAddressBook { - - private final UniquePersonList persons; - - /* - * The 'unusual' code block below is a non-static initialization block, sometimes used to avoid duplication - * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html - * - * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication - * among constructors. - */ - { - persons = new UniquePersonList(); - } - - public AddressBook() {} - - /** - * Creates an AddressBook using the Persons in the {@code toBeCopied} - */ - public AddressBook(ReadOnlyAddressBook toBeCopied) { - this(); - resetData(toBeCopied); - } - - //// list overwrite operations - - /** - * Replaces the contents of the person list with {@code persons}. - * {@code persons} must not contain duplicate persons. - */ - public void setPersons(List persons) { - this.persons.setPersons(persons); - } - - /** - * Resets the existing data of this {@code AddressBook} with {@code newData}. - */ - public void resetData(ReadOnlyAddressBook newData) { - requireNonNull(newData); - - setPersons(newData.getPersonList()); - } - - public void updateInternalList(ObservableList internalList) { - internalList.setAll(getPersonList()); - } - - //// person-level operations - - /** - * Returns true if a person with the same identity as {@code person} exists in the address book. - */ - public boolean hasPerson(Person person) { - requireNonNull(person); - return persons.contains(person); - } - - /** - * Adds a person to the address book. - * The person must not already exist in the address book. - */ - public void addPerson(Person p) { - persons.add(p); - } - - /** - * Replaces the given person {@code target} in the list with {@code editedPerson}. - * {@code target} must exist in the address book. - * The person identity of {@code editedPerson} must not be the same as another existing person in the address book. - */ - public void setPerson(Person target, Person editedPerson) { - requireNonNull(editedPerson); - - persons.setPerson(target, editedPerson); - } - - /** - * Removes {@code key} from this {@code AddressBook}. - * {@code key} must exist in the address book. - */ - public void removePerson(Person key) { - persons.remove(key); - } - - //// util methods - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("persons", persons) - .toString(); - } - - @Override - public ObservableList getPersonList() { - return persons.asUnmodifiableObservableList(); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof AddressBook)) { - return false; - } - - AddressBook otherAddressBook = (AddressBook) other; - return persons.equals(otherAddressBook.persons); - } - - @Override - public int hashCode() { - return persons.hashCode(); - } - - /** - * Adds a teacher to the address book. - * The teacher must not already exist in the address book. - */ - public void addTeacher(Teacher teacher) { - addPerson(teacher); - } -} diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java deleted file mode 100644 index efc2a822860..00000000000 --- a/src/main/java/seedu/address/model/Model.java +++ /dev/null @@ -1,90 +0,0 @@ -package seedu.address.model; - -import java.nio.file.Path; -import java.util.List; -import java.util.function.Predicate; - -import javafx.collections.ObservableList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.model.person.Person; - -/** - * The API of the Model component. - */ -public interface Model { - /** {@code Predicate} that always evaluate to true */ - Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; - - /** - * Replaces user prefs data with the data in {@code userPrefs}. - */ - void setUserPrefs(ReadOnlyUserPrefs userPrefs); - - /** - * Returns the user prefs. - */ - ReadOnlyUserPrefs getUserPrefs(); - - /** - * Returns the user prefs' GUI settings. - */ - GuiSettings getGuiSettings(); - - /** - * Sets the user prefs' GUI settings. - */ - void setGuiSettings(GuiSettings guiSettings); - - /** - * Returns the user prefs' address book file path. - */ - Path getAddressBookFilePath(); - - /** - * Sets the user prefs' address book file path. - */ - void setAddressBookFilePath(Path addressBookFilePath); - - /** - * Replaces address book data with the data in {@code addressBook}. - */ - void setAddressBook(ReadOnlyAddressBook addressBook); - - /** Returns the AddressBook */ - ReadOnlyAddressBook getAddressBook(); - - /** - * Returns true if a person with the same identity as {@code person} exists in the address book. - */ - boolean hasPerson(Person person); - - /** - * Deletes the given person. - * The person must exist in the address book. - */ - void deletePerson(Person target); - - /** - * Adds the given person. - * {@code person} must not already exist in the address book. - */ - void addPerson(Person person); - - /** - * Replaces the given person {@code target} with {@code editedPerson}. - * {@code target} must exist in the address book. - * The person identity of {@code editedPerson} must not be the same as another existing person in the address book. - */ - void setPerson(Person target, Person editedPerson); - - /** Returns an unmodifiable view of the filtered person list */ - ObservableList getFilteredPersonList(); - - /** - * Updates the filter of the filtered person list to filter by the given {@code predicate}. - * @throws NullPointerException if {@code predicate} is null. - */ - void updateFilteredPersonList(Predicate predicate); - - void setFilteredPersonList(List sortedList); -} diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java deleted file mode 100644 index 7e02ff9ed48..00000000000 --- a/src/main/java/seedu/address/model/ModelManager.java +++ /dev/null @@ -1,163 +0,0 @@ -package seedu.address.model; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.nio.file.Path; -import java.util.List; -import java.util.function.Predicate; -import java.util.logging.Logger; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.collections.transformation.FilteredList; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.core.LogsCenter; -import seedu.address.model.person.Person; - -/** - * Represents the in-memory model of the address book data. - */ -public class ModelManager implements Model { - private static final Logger logger = LogsCenter.getLogger(ModelManager.class); - - private final AddressBook addressBook; - private final UserPrefs userPrefs; - private final FilteredList filteredPersons; - - private final ObservableList internalList; - - /** - * Initializes a ModelManager with the given addressBook and userPrefs. - */ - public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) { - requireAllNonNull(addressBook, userPrefs); - - logger.fine("Initializing with address book: " + addressBook + " and user prefs " + userPrefs); - - this.addressBook = new AddressBook(addressBook); - this.userPrefs = new UserPrefs(userPrefs); - this.internalList = FXCollections.observableArrayList(this.addressBook.getPersonList()); - this.filteredPersons = new FilteredList<>(internalList); - } - - public ModelManager() { - this(new AddressBook(), new UserPrefs()); - } - - //=========== UserPrefs ================================================================================== - - @Override - public void setUserPrefs(ReadOnlyUserPrefs userPrefs) { - requireNonNull(userPrefs); - this.userPrefs.resetData(userPrefs); - } - - @Override - public ReadOnlyUserPrefs getUserPrefs() { - return userPrefs; - } - - @Override - public GuiSettings getGuiSettings() { - return userPrefs.getGuiSettings(); - } - - @Override - public void setGuiSettings(GuiSettings guiSettings) { - requireNonNull(guiSettings); - userPrefs.setGuiSettings(guiSettings); - } - - @Override - public Path getAddressBookFilePath() { - return userPrefs.getAddressBookFilePath(); - } - - @Override - public void setAddressBookFilePath(Path addressBookFilePath) { - requireNonNull(addressBookFilePath); - userPrefs.setAddressBookFilePath(addressBookFilePath); - } - - //=========== AddressBook ================================================================================ - - @Override - public void setAddressBook(ReadOnlyAddressBook addressBook) { - this.addressBook.resetData(addressBook); - internalList.setAll(addressBook.getPersonList()); - } - - @Override - public ReadOnlyAddressBook getAddressBook() { - return addressBook; - } - - @Override - public boolean hasPerson(Person person) { - requireNonNull(person); - return addressBook.hasPerson(person); - } - - @Override - public void deletePerson(Person target) { - addressBook.removePerson(target); - addressBook.updateInternalList(internalList); - } - - @Override - public void addPerson(Person person) { - addressBook.addPerson(person); - updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - } - - @Override - public void setPerson(Person target, Person editedPerson) { - requireAllNonNull(target, editedPerson); - addressBook.setPerson(target, editedPerson); - addressBook.updateInternalList(internalList); - } - - @Override - public void setFilteredPersonList(List persons) { - requireNonNull(persons); - internalList.setAll(persons); - filteredPersons.setPredicate(filteredPersons.getPredicate()); - } - - //=========== Filtered Person List Accessors ============================================================= - - /** - * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of - * {@code versionedAddressBook} - */ - @Override - public ObservableList getFilteredPersonList() { - return FXCollections.unmodifiableObservableList(filteredPersons); - } - - @Override - public void updateFilteredPersonList(Predicate predicate) { - requireNonNull(predicate); - addressBook.updateInternalList(internalList); - filteredPersons.setPredicate(predicate); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof ModelManager)) { - return false; - } - - ModelManager otherModelManager = (ModelManager) other; - return addressBook.equals(otherModelManager.addressBook) - && userPrefs.equals(otherModelManager.userPrefs) - && filteredPersons.equals(otherModelManager.filteredPersons); - } - -} diff --git a/src/main/java/seedu/address/model/ReadOnlyAddressBook.java b/src/main/java/seedu/address/model/ReadOnlyAddressBook.java deleted file mode 100644 index 6ddc2cd9a29..00000000000 --- a/src/main/java/seedu/address/model/ReadOnlyAddressBook.java +++ /dev/null @@ -1,17 +0,0 @@ -package seedu.address.model; - -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; - -/** - * Unmodifiable view of an address book - */ -public interface ReadOnlyAddressBook { - - /** - * Returns an unmodifiable view of the persons list. - * This list will not contain any duplicate persons. - */ - ObservableList getPersonList(); - -} diff --git a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java b/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java deleted file mode 100644 index befd58a4c73..00000000000 --- a/src/main/java/seedu/address/model/ReadOnlyUserPrefs.java +++ /dev/null @@ -1,16 +0,0 @@ -package seedu.address.model; - -import java.nio.file.Path; - -import seedu.address.commons.core.GuiSettings; - -/** - * Unmodifiable view of user prefs. - */ -public interface ReadOnlyUserPrefs { - - GuiSettings getGuiSettings(); - - Path getAddressBookFilePath(); - -} diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java deleted file mode 100644 index 6be655fb4c7..00000000000 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ /dev/null @@ -1,88 +0,0 @@ -package seedu.address.model; - -import static java.util.Objects.requireNonNull; - -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Objects; - -import seedu.address.commons.core.GuiSettings; - -/** - * Represents User's preferences. - */ -public class UserPrefs implements ReadOnlyUserPrefs { - - private GuiSettings guiSettings = new GuiSettings(); - private Path addressBookFilePath = Paths.get("data" , "addressbook.json"); - - /** - * Creates a {@code UserPrefs} with default values. - */ - public UserPrefs() {} - - /** - * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}. - */ - public UserPrefs(ReadOnlyUserPrefs userPrefs) { - this(); - resetData(userPrefs); - } - - /** - * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}. - */ - public void resetData(ReadOnlyUserPrefs newUserPrefs) { - requireNonNull(newUserPrefs); - setGuiSettings(newUserPrefs.getGuiSettings()); - setAddressBookFilePath(newUserPrefs.getAddressBookFilePath()); - } - - public GuiSettings getGuiSettings() { - return guiSettings; - } - - public void setGuiSettings(GuiSettings guiSettings) { - requireNonNull(guiSettings); - this.guiSettings = guiSettings; - } - - public Path getAddressBookFilePath() { - return addressBookFilePath; - } - - public void setAddressBookFilePath(Path addressBookFilePath) { - requireNonNull(addressBookFilePath); - this.addressBookFilePath = addressBookFilePath; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof UserPrefs)) { - return false; - } - - UserPrefs otherUserPrefs = (UserPrefs) other; - return guiSettings.equals(otherUserPrefs.guiSettings) - && addressBookFilePath.equals(otherUserPrefs.addressBookFilePath); - } - - @Override - public int hashCode() { - return Objects.hash(guiSettings, addressBookFilePath); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("Gui Settings : " + guiSettings); - sb.append("\nLocal data file location : " + addressBookFilePath); - return sb.toString(); - } - -} diff --git a/src/main/java/seedu/address/model/person/Address.java b/src/main/java/seedu/address/model/person/Address.java deleted file mode 100644 index 2a4ac9b1aaa..00000000000 --- a/src/main/java/seedu/address/model/person/Address.java +++ /dev/null @@ -1,65 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's address in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidAddress(String)} - */ -public class Address { - - public static final String MESSAGE_CONSTRAINTS = "Addresses can take any values, and it should not be blank"; - - /* - * The first character of the address must not be a whitespace, - * otherwise " " (a blank string) becomes a valid input. - */ - public static final String VALIDATION_REGEX = "\\S.*"; - - public final String value; - - /** - * Constructs an {@code Address}. - * - * @param address A valid address. - */ - public Address(String address) { - requireNonNull(address); - checkArgument(isValidAddress(address), MESSAGE_CONSTRAINTS); - value = address; - } - - /** - * Returns true if a given string is a valid email. - */ - public static boolean isValidAddress(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Address)) { - return false; - } - - Address otherAddress = (Address) other; - return value.equals(otherAddress.value); - } - - @Override - public int hashCode() { - return value.hashCode(); - } - -} diff --git a/src/main/java/seedu/address/model/person/AddressContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/person/AddressContainsKeywordsPredicate.java deleted file mode 100644 index 7b1d7e2c3ee..00000000000 --- a/src/main/java/seedu/address/model/person/AddressContainsKeywordsPredicate.java +++ /dev/null @@ -1,45 +0,0 @@ -package seedu.address.model.person; - -import java.util.List; -import java.util.function.Predicate; - -import seedu.address.commons.util.StringUtil; -import seedu.address.commons.util.ToStringBuilder; - -/** - * Tests that a {@code Person}'s {@code Address} matches any of the keywords given. - */ -public class AddressContainsKeywordsPredicate implements Predicate { - private final List keywords; - - public AddressContainsKeywordsPredicate(List keywords) { - this.keywords = keywords; - } - - @Override - public boolean test(Person person) { - return keywords.stream() - .anyMatch(keyword -> StringUtil.containsWordIgnoreCase(person.getAddress().value, keyword)); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof AddressContainsKeywordsPredicate)) { - return false; - } - - AddressContainsKeywordsPredicate otherAddressContainsKeywordsPredicate = - (AddressContainsKeywordsPredicate) other; - return keywords.equals(otherAddressContainsKeywordsPredicate.keywords); - } - - @Override - public String toString() { - return new ToStringBuilder(this).add("keywords", keywords).toString(); - } -} diff --git a/src/main/java/seedu/address/model/person/Email.java b/src/main/java/seedu/address/model/person/Email.java deleted file mode 100644 index c62e512bc29..00000000000 --- a/src/main/java/seedu/address/model/person/Email.java +++ /dev/null @@ -1,79 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's email in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)} - */ -public class Email { - - private static final String SPECIAL_CHARACTERS = "+_.-"; - public static final String MESSAGE_CONSTRAINTS = "Emails should be of the format local-part@domain " - + "and adhere to the following constraints:\n" - + "1. The local-part should only contain alphanumeric characters and these special characters, excluding " - + "the parentheses, (" + SPECIAL_CHARACTERS + "). The local-part may not start or end with any special " - + "characters.\n" - + "2. This is followed by a '@' and then a domain name. The domain name is made up of domain labels " - + "separated by periods.\n" - + "The domain name must:\n" - + " - end with a domain label at least 2 characters long\n" - + " - have each domain label start and end with alphanumeric characters\n" - + " - have each domain label consist of alphanumeric characters, separated only by hyphens, if any."; - // alphanumeric and special characters - private static final String ALPHANUMERIC_NO_UNDERSCORE = "[^\\W_]+"; // alphanumeric characters except underscore - private static final String LOCAL_PART_REGEX = "^" + ALPHANUMERIC_NO_UNDERSCORE + "([" + SPECIAL_CHARACTERS + "]" - + ALPHANUMERIC_NO_UNDERSCORE + ")*"; - private static final String DOMAIN_PART_REGEX = ALPHANUMERIC_NO_UNDERSCORE - + "(-" + ALPHANUMERIC_NO_UNDERSCORE + ")*"; - private static final String DOMAIN_LAST_PART_REGEX = "(" + DOMAIN_PART_REGEX + "){2,}$"; // At least two chars - private static final String DOMAIN_REGEX = "(" + DOMAIN_PART_REGEX + "\\.)*" + DOMAIN_LAST_PART_REGEX; - public static final String VALIDATION_REGEX = LOCAL_PART_REGEX + "@" + DOMAIN_REGEX; - - public final String value; - - /** - * Constructs an {@code Email}. - * - * @param email A valid email address. - */ - public Email(String email) { - requireNonNull(email); - checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS); - value = email; - } - - /** - * Returns if a given string is a valid email. - */ - public static boolean isValidEmail(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Email)) { - return false; - } - - Email otherEmail = (Email) other; - return value.equals(otherEmail.value); - } - - @Override - public int hashCode() { - return value.hashCode(); - } - -} diff --git a/src/main/java/seedu/address/model/person/EmailContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/person/EmailContainsKeywordsPredicate.java deleted file mode 100644 index 66b81806a8d..00000000000 --- a/src/main/java/seedu/address/model/person/EmailContainsKeywordsPredicate.java +++ /dev/null @@ -1,43 +0,0 @@ -package seedu.address.model.person; - -import java.util.List; -import java.util.function.Predicate; - -import seedu.address.commons.util.ToStringBuilder; - -/** - * Tests that a {@code Person}'s {@code Email} matches any of the keywords given. - */ -public class EmailContainsKeywordsPredicate implements Predicate { - private final List keywords; - - public EmailContainsKeywordsPredicate(List keywords) { - this.keywords = keywords; - } - - @Override - public boolean test(Person person) { - return keywords.stream() - .anyMatch(keyword -> keyword.equalsIgnoreCase(person.getEmail().value)); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof EmailContainsKeywordsPredicate)) { - return false; - } - - EmailContainsKeywordsPredicate otherEmailContainsKeywordsPredicate = (EmailContainsKeywordsPredicate) other; - return keywords.equals(otherEmailContainsKeywordsPredicate.keywords); - } - - @Override - public String toString() { - return new ToStringBuilder(this).add("keywords", keywords).toString(); - } -} diff --git a/src/main/java/seedu/address/model/person/Gender.java b/src/main/java/seedu/address/model/person/Gender.java deleted file mode 100644 index 3acd09517de..00000000000 --- a/src/main/java/seedu/address/model/person/Gender.java +++ /dev/null @@ -1,61 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's gender in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidGender(String)} - */ -public class Gender { - - public static final String MESSAGE_CONSTRAINTS = - "Gender should be either 'male' or 'female'"; - - private static final String VALIDATION_REGEX = "male|female"; - - public final String value; - - /** - * Constructs a {@code Gender}. - * - * @param gender A valid gender. - */ - public Gender(String gender) { - requireNonNull(gender); - checkArgument(isValidGender(gender), MESSAGE_CONSTRAINTS); - value = gender; - } - - /** - * Returns true if a given string is a valid gender. - */ - public static boolean isValidGender(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Gender)) { - return false; - } - - Gender otherGender = (Gender) other; - return value.equals(otherGender.value); - } - - @Override - public int hashCode() { - return value.hashCode(); - } -} diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/address/model/person/Name.java deleted file mode 100644 index 173f15b9b00..00000000000 --- a/src/main/java/seedu/address/model/person/Name.java +++ /dev/null @@ -1,67 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's name in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidName(String)} - */ -public class Name { - - public static final String MESSAGE_CONSTRAINTS = - "Names should only contain alphanumeric characters and spaces, and it should not be blank"; - - /* - * The first character of the address must not be a whitespace, - * otherwise " " (a blank string) becomes a valid input. - */ - public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; - - public final String fullName; - - /** - * Constructs a {@code Name}. - * - * @param name A valid name. - */ - public Name(String name) { - requireNonNull(name); - checkArgument(isValidName(name), MESSAGE_CONSTRAINTS); - fullName = name; - } - - /** - * Returns true if a given string is a valid name. - */ - public static boolean isValidName(String test) { - return test.matches(VALIDATION_REGEX); - } - - - @Override - public String toString() { - return fullName; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Name)) { - return false; - } - - Name otherName = (Name) other; - return fullName.equals(otherName.fullName); - } - - @Override - public int hashCode() { - return fullName.hashCode(); - } - -} diff --git a/src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java deleted file mode 100644 index 62d19be2977..00000000000 --- a/src/main/java/seedu/address/model/person/NameContainsKeywordsPredicate.java +++ /dev/null @@ -1,44 +0,0 @@ -package seedu.address.model.person; - -import java.util.List; -import java.util.function.Predicate; - -import seedu.address.commons.util.StringUtil; -import seedu.address.commons.util.ToStringBuilder; - -/** - * Tests that a {@code Person}'s {@code Name} matches any of the keywords given. - */ -public class NameContainsKeywordsPredicate implements Predicate { - private final List keywords; - - public NameContainsKeywordsPredicate(List keywords) { - this.keywords = keywords; - } - - @Override - public boolean test(Person person) { - return keywords.stream() - .anyMatch(keyword -> StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword)); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof NameContainsKeywordsPredicate)) { - return false; - } - - NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate = (NameContainsKeywordsPredicate) other; - return keywords.equals(otherNameContainsKeywordsPredicate.keywords); - } - - @Override - public String toString() { - return new ToStringBuilder(this).add("keywords", keywords).toString(); - } -} diff --git a/src/main/java/seedu/address/model/person/Person.java b/src/main/java/seedu/address/model/person/Person.java deleted file mode 100644 index aea449d8a86..00000000000 --- a/src/main/java/seedu/address/model/person/Person.java +++ /dev/null @@ -1,121 +0,0 @@ -package seedu.address.model.person; - -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.model.tag.Tag; - -/** - * Represents a Person in the address book. - * Guarantees: details are present and not null, field values are validated, immutable. - */ -public class Person { - - // Identity fields - private final Name name; - private final Phone phone; - private final Email email; - - // Data fields - private final Address address; - private final Set tags = new HashSet<>(); - - /** - * Every field must be present and not null. - */ - public Person(Name name, Phone phone, Email email, Address address, Set tags) { - requireAllNonNull(name, phone, email, address, tags); - this.name = name; - this.phone = phone; - this.email = email; - this.address = address; - this.tags.addAll(tags); - } - - public Name getName() { - return name; - } - - public Phone getPhone() { - return phone; - } - - public Email getEmail() { - return email; - } - - public Address getAddress() { - return address; - } - - /** - * Returns an immutable tag set, which throws {@code UnsupportedOperationException} - * if modification is attempted. - */ - public Set getTags() { - return Collections.unmodifiableSet(tags); - } - - public String getNameString() { - return name.toString(); - } - - /** - * Returns true if both persons have the same name. - * This defines a weaker notion of equality between two persons. - */ - public boolean isSamePerson(Person otherPerson) { - if (otherPerson == this) { - return true; - } - - return otherPerson != null - && otherPerson.getName().equals(getName()); - } - - /** - * Returns true if both persons have the same identity and data fields. - * This defines a stronger notion of equality between two persons. - */ - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Person)) { - return false; - } - - Person otherPerson = (Person) other; - return name.equals(otherPerson.name) - && phone.equals(otherPerson.phone) - && email.equals(otherPerson.email) - && address.equals(otherPerson.address) - && tags.equals(otherPerson.tags); - } - - @Override - public int hashCode() { - // use this method for custom fields hashing instead of implementing your own - return Objects.hash(name, phone, email, address, tags); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("name", name) - .add("phone", phone) - .add("email", email) - .add("address", address) - .add("tags", tags) - .toString(); - } - -} diff --git a/src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java deleted file mode 100644 index 5a50cec3761..00000000000 --- a/src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java +++ /dev/null @@ -1,118 +0,0 @@ -package seedu.address.model.person; - -import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Predicate; - -import seedu.address.logic.parser.Prefix; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * Tests that a {@code Person} matches any of the keywords given. - */ -public class PersonContainsKeywordsPredicate implements Predicate { - private boolean isSearchQueryEmpty = false; - - // Identity fields - private final NameContainsKeywordsPredicate namePredicate; - private final PhoneContainsKeywordsPredicate phonePredicate; - private final EmailContainsKeywordsPredicate emailPredicate; - - // Data predicates - private final AddressContainsKeywordsPredicate addressPredicate; - private final TagContainsKeywordsPredicate tagsPredicate; - - // TODO: Missing keywords lists for subject and classes - - /** - * Constructs a {@code PersonContainsKeywordsPredicate} - * - * @param searchQuery A list representing the search or filter query by the user - * @throws ParseException If a non-empty search query was given that didn't fit the categories - */ - public PersonContainsKeywordsPredicate(List searchQuery) throws ParseException { - if (searchQuery.get(0).isEmpty()) { - isSearchQueryEmpty = true; - namePredicate = new NameContainsKeywordsPredicate(new ArrayList<>()); - phonePredicate = new PhoneContainsKeywordsPredicate(new ArrayList<>()); - emailPredicate = new EmailContainsKeywordsPredicate(new ArrayList<>()); - addressPredicate = new AddressContainsKeywordsPredicate(new ArrayList<>()); - tagsPredicate = new TagContainsKeywordsPredicate(new ArrayList<>()); - return; - } - - // Initialize keyword lists - List nameKeywords = new ArrayList<>(); - List phoneKeywords = new ArrayList<>(); - List emailKeywords = new ArrayList<>(); - List addressKeywords = new ArrayList<>(); - List tagsKeywords = new ArrayList<>(); - - Map> keywordMap = new HashMap<>(); - keywordMap.put(PREFIX_NAME, nameKeywords); - keywordMap.put(PREFIX_PHONE, phoneKeywords); - keywordMap.put(PREFIX_EMAIL, emailKeywords); - keywordMap.put(PREFIX_ADDRESS, addressKeywords); - keywordMap.put(PREFIX_TAG, tagsKeywords); - - List currentList = null; - - for (String keyword : searchQuery) { - if (keywordMap.containsKey(new Prefix(keyword))) { - currentList = keywordMap.get(new Prefix(keyword)); - } else if (currentList != null) { - currentList.add(keyword); - } else { - throw new ParseException(MESSAGE_INVALID_COMMAND_FORMAT); - } - } - - namePredicate = new NameContainsKeywordsPredicate(nameKeywords); - phonePredicate = new PhoneContainsKeywordsPredicate(phoneKeywords); - emailPredicate = new EmailContainsKeywordsPredicate(emailKeywords); - addressPredicate = new AddressContainsKeywordsPredicate(addressKeywords); - tagsPredicate = new TagContainsKeywordsPredicate(tagsKeywords); - } - - @Override - public boolean test(Person person) { - if (isSearchQueryEmpty) { - return true; - } - - boolean hasMatchingName = namePredicate.test(person); - boolean hasMatchingPhone = phonePredicate.test(person); - boolean hasMatchingEmail = emailPredicate.test(person); - boolean hasMatchingAddress = addressPredicate.test(person); - boolean hasMatchingTags = tagsPredicate.test(person); - - return hasMatchingName || hasMatchingPhone || hasMatchingEmail || hasMatchingAddress || hasMatchingTags; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - if (!(other instanceof PersonContainsKeywordsPredicate)) { - return false; - } - - PersonContainsKeywordsPredicate otherPersonContainsKeywordPredicate = (PersonContainsKeywordsPredicate) other; - return namePredicate.equals(otherPersonContainsKeywordPredicate.namePredicate) - && phonePredicate.equals(otherPersonContainsKeywordPredicate.phonePredicate) - && emailPredicate.equals(otherPersonContainsKeywordPredicate.emailPredicate) - && addressPredicate.equals(otherPersonContainsKeywordPredicate.addressPredicate) - && tagsPredicate.equals(otherPersonContainsKeywordPredicate.tagsPredicate); - } -} diff --git a/src/main/java/seedu/address/model/person/Phone.java b/src/main/java/seedu/address/model/person/Phone.java deleted file mode 100644 index d733f63d739..00000000000 --- a/src/main/java/seedu/address/model/person/Phone.java +++ /dev/null @@ -1,61 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's phone number in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)} - */ -public class Phone { - - - public static final String MESSAGE_CONSTRAINTS = - "Phone numbers should only contain numbers, and it should be at least 3 digits long"; - public static final String VALIDATION_REGEX = "\\d{3,}"; - public final String value; - - /** - * Constructs a {@code Phone}. - * - * @param phone A valid phone number. - */ - public Phone(String phone) { - requireNonNull(phone); - checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS); - value = phone; - } - - /** - * Returns true if a given string is a valid phone number. - */ - public static boolean isValidPhone(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Phone)) { - return false; - } - - Phone otherPhone = (Phone) other; - return value.equals(otherPhone.value); - } - - @Override - public int hashCode() { - return value.hashCode(); - } - -} diff --git a/src/main/java/seedu/address/model/person/PhoneContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/person/PhoneContainsKeywordsPredicate.java deleted file mode 100644 index c771ce30a37..00000000000 --- a/src/main/java/seedu/address/model/person/PhoneContainsKeywordsPredicate.java +++ /dev/null @@ -1,44 +0,0 @@ -package seedu.address.model.person; - -import java.util.List; -import java.util.function.Predicate; - -import seedu.address.commons.util.StringUtil; -import seedu.address.commons.util.ToStringBuilder; - -/** - * Tests that a {@code Person}'s {@code Phone} matches any of the keywords given. - */ -public class PhoneContainsKeywordsPredicate implements Predicate { - private final List keywords; - - public PhoneContainsKeywordsPredicate(List keywords) { - this.keywords = keywords; - } - - @Override - public boolean test(Person person) { - return keywords.stream() - .anyMatch(keyword -> StringUtil.containsWordIgnoreCase(person.getPhone().value, keyword)); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof PhoneContainsKeywordsPredicate)) { - return false; - } - - PhoneContainsKeywordsPredicate otherPhoneContainsKeywordsPredicate = (PhoneContainsKeywordsPredicate) other; - return keywords.equals(otherPhoneContainsKeywordsPredicate.keywords); - } - - @Override - public String toString() { - return new ToStringBuilder(this).add("keywords", keywords).toString(); - } -} diff --git a/src/main/java/seedu/address/model/person/Student.java b/src/main/java/seedu/address/model/person/Student.java deleted file mode 100644 index bbd9fa219b3..00000000000 --- a/src/main/java/seedu/address/model/person/Student.java +++ /dev/null @@ -1,93 +0,0 @@ -package seedu.address.model.person; - -import java.util.Objects; -import java.util.Set; - -import seedu.address.model.tag.Tag; - -/** - * Represents a Student in the address book. - * Guarantees: details are present and not null, field values are validated, immutable. - */ -public class Student extends Person { - - private final Subject subject; // Subject the student is associated with - private final Set classes; // Classes the student attends - - /** - * Every field must be present and not null. - * - * @param name Name of the student - * @param phone Phone number of the student - * @param email Email of the student - * @param address Address of the student - * @param tags Tags associated with the student - * @param subject Subject the student is taking - * @param classes Set of class names the student is attending - */ - public Student(Name name, Phone phone, Email email, Address address, Set tags, - Subject subject, Set classes) { - super(name, phone, email, address, tags); - Objects.requireNonNull(subject, "Subject must not be null"); - Objects.requireNonNull(classes, "Classes must not be null"); - this.subject = subject; - this.classes = classes; - } - - public Subject getSubject() { - return subject; - } - - public Set getClasses() { - return classes; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Student: ") - .append(getName()) - .append("; Phone: ") - .append(getPhone()) - .append("; Email: ") - .append(getEmail()) - .append("; Address: ") - .append(getAddress()) - .append("; Subject: ") - .append(getSubject()) - .append("; Classes: ") - .append(String.join(", ", classes)); - - Set tags = getTags(); - if (!tags.isEmpty()) { - builder.append("; Tags: "); - tags.forEach(tag -> builder.append(tag).append(" ")); - } - return builder.toString(); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - if (!(other instanceof Student)) { - return false; - } - - Student otherStudent = (Student) other; - return otherStudent.getName().equals(getName()) - && otherStudent.getPhone().equals(getPhone()) - && otherStudent.getEmail().equals(getEmail()) - && otherStudent.getAddress().equals(getAddress()) - && otherStudent.getSubject().equals(getSubject()) - && otherStudent.getClasses().equals(getClasses()) - && otherStudent.getTags().equals(getTags()); - } - - @Override - public int hashCode() { - return Objects.hash(getName(), getPhone(), getEmail(), getAddress(), getSubject(), getClasses(), getTags()); - } -} diff --git a/src/main/java/seedu/address/model/person/Subject.java b/src/main/java/seedu/address/model/person/Subject.java deleted file mode 100644 index b9a0b54e12e..00000000000 --- a/src/main/java/seedu/address/model/person/Subject.java +++ /dev/null @@ -1,65 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Person's subject in the address book. - * Guarantees: immutable; is valid as declared in {@link #isValidSubject(String)} - */ -public class Subject { - - public static final String MESSAGE_CONSTRAINTS = "Subjects should only contain alphanumeric characters and spaces, " - + "and it should not be blank."; - /* - * The first character of the subject must be an alphanumeric character, and it can be followed by - * alphanumeric characters or spaces. - */ - public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; - - public final String value; - - /** - * Constructs a {@code Subject}. - * - * @param subject A valid subject name. - */ - public Subject(String subject) { - requireNonNull(subject); - checkArgument(isValidSubject(subject), MESSAGE_CONSTRAINTS); - value = subject; - } - - /** - * Returns if a given string is a valid subject name. - */ - public static boolean isValidSubject(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public String toString() { - return value; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Subject)) { - return false; - } - - Subject otherSubject = (Subject) other; - return value.equals(otherSubject.value); - } - - @Override - public int hashCode() { - return value.hashCode(); - } -} - diff --git a/src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java deleted file mode 100644 index 88704db5e3b..00000000000 --- a/src/main/java/seedu/address/model/person/TagContainsKeywordsPredicate.java +++ /dev/null @@ -1,45 +0,0 @@ -package seedu.address.model.person; - -import java.util.List; -import java.util.function.Predicate; - -import seedu.address.commons.util.StringUtil; -import seedu.address.commons.util.ToStringBuilder; - -/** - * Tests that a {@code Person}'s {@code Tag} matches any of the keywords given. - */ -public class TagContainsKeywordsPredicate implements Predicate { - private final List keywords; - - public TagContainsKeywordsPredicate(List keywords) { - this.keywords = keywords; - } - - @Override - public boolean test(Person person) { - return keywords.stream() - .anyMatch(keyword -> person.getTags().stream() - .anyMatch(tag -> StringUtil.containsWordIgnoreCase(tag.tagName, keyword))); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof TagContainsKeywordsPredicate)) { - return false; - } - - TagContainsKeywordsPredicate otherTagContainsKeywordsPredicate = (TagContainsKeywordsPredicate) other; - return keywords.equals(otherTagContainsKeywordsPredicate.keywords); - } - - @Override - public String toString() { - return new ToStringBuilder(this).add("keywords", keywords).toString(); - } -} diff --git a/src/main/java/seedu/address/model/person/Teacher.java b/src/main/java/seedu/address/model/person/Teacher.java deleted file mode 100644 index 1d598be2c60..00000000000 --- a/src/main/java/seedu/address/model/person/Teacher.java +++ /dev/null @@ -1,115 +0,0 @@ -package seedu.address.model.person; - -import java.util.Objects; -import java.util.Set; - -import seedu.address.commons.util.ToStringBuilder; -import seedu.address.model.tag.Tag; - -/** - * Represents a Teacher in the address book. - * Inherits from the Person class and includes an additional gender field. - * Guarantees: details are present and not null, field values are validated, immutable. - */ -public class Teacher extends Person { - - private final Gender gender; - private final Subject subject; - private final Set classes; - - /** - * Constructs a {@code Teacher} with the specified details. - * - * @param name The name of the teacher. Must not be null. - * @param gender The gender of the teacher. Must not be null. - * @param phone The phone number of the teacher. Must not be null. - * @param email The email address of the teacher. Must not be null. - * @param address The address of the teacher. Must not be null. - * @param tags The set of tags associated with the teacher. Must not be null. - * @param subject The subject taught by the teacher. Must not be null. - * @param classes The set of classes taught by the teacher. Must not be null. - * @throws NullPointerException if any of the parameters are null. - */ - public Teacher(Name name, Gender gender, Phone phone, Email email, Address address, Set tags, - Subject subject, Set classes) { - super(name, phone, email, address, tags); - Objects.requireNonNull(gender, "Gender cannot be null"); - this.gender = gender; - Objects.requireNonNull(subject, "Subject cannot be null"); - this.subject = subject; - Objects.requireNonNull(classes, "Classes cannot be null"); - this.classes = classes; - } - - public Gender getGender() { - return this.gender; - } - - public Subject getSubject() { - return this.subject; - } - - public Set getClasses() { - return this.classes; - } - - /** - * Returns true if both teachers have the same name. - * This defines a weaker notion of equality between two teachers. - */ - public boolean isSameTeacher(Teacher otherTeacher) { - if (otherTeacher == this) { - return true; - } - - return otherTeacher != null - && otherTeacher.getName().equals(getName()); - } - - /** - * Returns true if both Teachers have the same identity and data fields. - * This defines a stronger notion of equality between two persons. - */ - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Teacher)) { - return false; - } - - Teacher otherTeacher = (Teacher) other; - return getName().equals(otherTeacher.getName()) - && getGender().equals(otherTeacher.getGender()) - && getPhone().equals(otherTeacher.getPhone()) - && getEmail().equals(otherTeacher.getEmail()) - && getAddress().equals(otherTeacher.getAddress()) - && getTags().equals(otherTeacher.getTags()) - && getSubject().equals(otherTeacher.getSubject()) - && getClasses().equals(otherTeacher.getClasses()); - } - - @Override - public String toString() { - return new ToStringBuilder(this) - .add("name", getName()) - .add("gender", gender) - .add("phone", getPhone()) - .add("email", getEmail()) - .add("address", getAddress()) - .add("tags", getTags()) - .add("subject", subject) - .add("classes", classes) - .toString(); - } - - @Override - public int hashCode() { - return Objects.hash(getName(), getGender(), getPhone(), getEmail(), getAddress(), - getTags(), getSubject(), getClasses()); - } - -} diff --git a/src/main/java/seedu/address/model/person/UniquePersonList.java b/src/main/java/seedu/address/model/person/UniquePersonList.java deleted file mode 100644 index cc0a68d79f9..00000000000 --- a/src/main/java/seedu/address/model/person/UniquePersonList.java +++ /dev/null @@ -1,150 +0,0 @@ -package seedu.address.model.person; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; - -import java.util.Iterator; -import java.util.List; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.model.person.exceptions.PersonNotFoundException; - -/** - * A list of persons that enforces uniqueness between its elements and does not allow nulls. - * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of - * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is - * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so - * as to ensure that the person with exactly the same fields will be removed. - * - * Supports a minimal set of list operations. - * - * @see Person#isSamePerson(Person) - */ -public class UniquePersonList implements Iterable { - - private final ObservableList internalList = FXCollections.observableArrayList(); - private final ObservableList internalUnmodifiableList = - FXCollections.unmodifiableObservableList(internalList); - - /** - * Returns true if the list contains an equivalent person as the given argument. - */ - public boolean contains(Person toCheck) { - requireNonNull(toCheck); - return internalList.stream().anyMatch(toCheck::isSamePerson); - } - - /** - * Adds a person to the list. - * The person must not already exist in the list. - */ - public void add(Person toAdd) { - requireNonNull(toAdd); - if (contains(toAdd)) { - throw new DuplicatePersonException(); - } - internalList.add(toAdd); - } - - /** - * Replaces the person {@code target} in the list with {@code editedPerson}. - * {@code target} must exist in the list. - * The person identity of {@code editedPerson} must not be the same as another existing person in the list. - */ - public void setPerson(Person target, Person editedPerson) { - requireAllNonNull(target, editedPerson); - - int index = internalList.indexOf(target); - if (index == -1) { - throw new PersonNotFoundException(); - } - - if (!target.isSamePerson(editedPerson) && contains(editedPerson)) { - throw new DuplicatePersonException(); - } - - internalList.set(index, editedPerson); - } - - /** - * Removes the equivalent person from the list. - * The person must exist in the list. - */ - public void remove(Person toRemove) { - requireNonNull(toRemove); - if (!internalList.remove(toRemove)) { - throw new PersonNotFoundException(); - } - } - - public void setPersons(UniquePersonList replacement) { - requireNonNull(replacement); - internalList.setAll(replacement.internalList); - } - - /** - * Replaces the contents of this list with {@code persons}. - * {@code persons} must not contain duplicate persons. - */ - public void setPersons(List persons) { - requireAllNonNull(persons); - if (!personsAreUnique(persons)) { - throw new DuplicatePersonException(); - } - - internalList.setAll(persons); - } - - /** - * Returns the backing list as an unmodifiable {@code ObservableList}. - */ - public ObservableList asUnmodifiableObservableList() { - return internalUnmodifiableList; - } - - @Override - public Iterator iterator() { - return internalList.iterator(); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof UniquePersonList)) { - return false; - } - - UniquePersonList otherUniquePersonList = (UniquePersonList) other; - return internalList.equals(otherUniquePersonList.internalList); - } - - @Override - public int hashCode() { - return internalList.hashCode(); - } - - @Override - public String toString() { - return internalList.toString(); - } - - /** - * Returns true if {@code persons} contains only unique persons. - */ - private boolean personsAreUnique(List persons) { - for (int i = 0; i < persons.size() - 1; i++) { - for (int j = i + 1; j < persons.size(); j++) { - if (persons.get(i).isSamePerson(persons.get(j))) { - return false; - } - } - } - return true; - } -} diff --git a/src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java b/src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java deleted file mode 100644 index d7290f59442..00000000000 --- a/src/main/java/seedu/address/model/person/exceptions/DuplicatePersonException.java +++ /dev/null @@ -1,11 +0,0 @@ -package seedu.address.model.person.exceptions; - -/** - * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same - * identity). - */ -public class DuplicatePersonException extends RuntimeException { - public DuplicatePersonException() { - super("Operation would result in duplicate persons"); - } -} diff --git a/src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java b/src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java deleted file mode 100644 index fa764426ca7..00000000000 --- a/src/main/java/seedu/address/model/person/exceptions/PersonNotFoundException.java +++ /dev/null @@ -1,6 +0,0 @@ -package seedu.address.model.person.exceptions; - -/** - * Signals that the operation is unable to find the specified person. - */ -public class PersonNotFoundException extends RuntimeException {} diff --git a/src/main/java/seedu/address/model/tag/Tag.java b/src/main/java/seedu/address/model/tag/Tag.java deleted file mode 100644 index f1a0d4e233b..00000000000 --- a/src/main/java/seedu/address/model/tag/Tag.java +++ /dev/null @@ -1,62 +0,0 @@ -package seedu.address.model.tag; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.util.AppUtil.checkArgument; - -/** - * Represents a Tag in the address book. - * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)} - */ -public class Tag { - - public static final String MESSAGE_CONSTRAINTS = "Tags names should be alphanumeric"; - public static final String VALIDATION_REGEX = "\\p{Alnum}+"; - - public final String tagName; - - /** - * Constructs a {@code Tag}. - * - * @param tagName A valid tag name. - */ - public Tag(String tagName) { - requireNonNull(tagName); - checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS); - this.tagName = tagName; - } - - /** - * Returns true if a given string is a valid tag name. - */ - public static boolean isValidTagName(String test) { - return test.matches(VALIDATION_REGEX); - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof Tag)) { - return false; - } - - Tag otherTag = (Tag) other; - return tagName.equals(otherTag.tagName); - } - - @Override - public int hashCode() { - return tagName.hashCode(); - } - - /** - * Format state as text for viewing. - */ - public String toString() { - return '[' + tagName + ']'; - } - -} diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java deleted file mode 100644 index 23f6ffb2eeb..00000000000 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ /dev/null @@ -1,69 +0,0 @@ -package seedu.address.model.util; - -import java.util.Arrays; -import java.util.Set; -import java.util.stream.Collectors; - -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Contains utility methods for populating {@code AddressBook} with sample data. - */ -public class SampleDataUtil { - - public static Person[] getSamplePersons() { - return new Person[] { - new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), - new Address("Blk 30 Geylang Street 29, #06-40"), - getTagSet("friends")), - new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), - new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), - getTagSet("colleagues", "friends")), - new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), - new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), - getTagSet("neighbours")), - new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), - new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), - getTagSet("family")), - new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), - new Address("Blk 47 Tampines Street 20, #17-35"), - getTagSet("classmates")), - new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), - new Address("Blk 45 Aljunied Street 85, #11-31"), - getTagSet("colleagues")) - }; - } - - public static ReadOnlyAddressBook getSampleAddressBook() { - AddressBook sampleAb = new AddressBook(); - for (Person samplePerson : getSamplePersons()) { - sampleAb.addPerson(samplePerson); - } - return sampleAb; - } - - /** - * Returns a tag set containing the list of strings given. - */ - public static Set getTagSet(String... strings) { - return Arrays.stream(strings) - .map(Tag::new) - .collect(Collectors.toSet()); - } - - /** - * Returns a class set containing the list of strings given. - */ - public static Set getClassSet(String... strings) { - return Arrays.stream(strings) - .map(String::trim) - .collect(Collectors.toSet()); - } -} diff --git a/src/main/java/seedu/address/storage/AddressBookStorage.java b/src/main/java/seedu/address/storage/AddressBookStorage.java deleted file mode 100644 index f2e015105ae..00000000000 --- a/src/main/java/seedu/address/storage/AddressBookStorage.java +++ /dev/null @@ -1,45 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.model.ReadOnlyAddressBook; - -/** - * Represents a storage for {@link seedu.address.model.AddressBook}. - */ -public interface AddressBookStorage { - - /** - * Returns the file path of the data file. - */ - Path getAddressBookFilePath(); - - /** - * Returns AddressBook data as a {@link ReadOnlyAddressBook}. - * Returns {@code Optional.empty()} if storage file is not found. - * - * @throws DataLoadingException if loading the data from storage failed. - */ - Optional readAddressBook() throws DataLoadingException; - - /** - * @see #getAddressBookFilePath() - */ - Optional readAddressBook(Path filePath) throws DataLoadingException; - - /** - * Saves the given {@link ReadOnlyAddressBook} to the storage. - * @param addressBook cannot be null. - * @throws IOException if there was any problem writing to the file. - */ - void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException; - - /** - * @see #saveAddressBook(ReadOnlyAddressBook) - */ - void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException; - -} diff --git a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java b/src/main/java/seedu/address/storage/JsonAdaptedPerson.java deleted file mode 100644 index bd1ca0f56c8..00000000000 --- a/src/main/java/seedu/address/storage/JsonAdaptedPerson.java +++ /dev/null @@ -1,109 +0,0 @@ -package seedu.address.storage; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Jackson-friendly version of {@link Person}. - */ -class JsonAdaptedPerson { - - public static final String MISSING_FIELD_MESSAGE_FORMAT = "Person's %s field is missing!"; - - private final String name; - private final String phone; - private final String email; - private final String address; - private final List tags = new ArrayList<>(); - - /** - * Constructs a {@code JsonAdaptedPerson} with the given person details. - */ - @JsonCreator - public JsonAdaptedPerson(@JsonProperty("name") String name, @JsonProperty("phone") String phone, - @JsonProperty("email") String email, @JsonProperty("address") String address, - @JsonProperty("tags") List tags) { - this.name = name; - this.phone = phone; - this.email = email; - this.address = address; - if (tags != null) { - this.tags.addAll(tags); - } - } - - /** - * Converts a given {@code Person} into this class for Jackson use. - */ - public JsonAdaptedPerson(Person source) { - name = source.getName().fullName; - phone = source.getPhone().value; - email = source.getEmail().value; - address = source.getAddress().value; - tags.addAll(source.getTags().stream() - .map(JsonAdaptedTag::new) - .collect(Collectors.toList())); - } - - /** - * Converts this Jackson-friendly adapted person object into the model's {@code Person} object. - * - * @throws IllegalValueException if there were any data constraints violated in the adapted person. - */ - public Person toModelType() throws IllegalValueException { - final List personTags = new ArrayList<>(); - for (JsonAdaptedTag tag : tags) { - personTags.add(tag.toModelType()); - } - - if (name == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName())); - } - if (!Name.isValidName(name)) { - throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS); - } - final Name modelName = new Name(name); - - if (phone == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName())); - } - if (!Phone.isValidPhone(phone)) { - throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS); - } - final Phone modelPhone = new Phone(phone); - - if (email == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName())); - } - if (!Email.isValidEmail(email)) { - throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS); - } - final Email modelEmail = new Email(email); - - if (address == null) { - throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName())); - } - if (!Address.isValidAddress(address)) { - throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS); - } - final Address modelAddress = new Address(address); - - final Set modelTags = new HashSet<>(personTags); - return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags); - } - -} diff --git a/src/main/java/seedu/address/storage/JsonAdaptedTag.java b/src/main/java/seedu/address/storage/JsonAdaptedTag.java deleted file mode 100644 index 0df22bdb754..00000000000 --- a/src/main/java/seedu/address/storage/JsonAdaptedTag.java +++ /dev/null @@ -1,48 +0,0 @@ -package seedu.address.storage; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonValue; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.tag.Tag; - -/** - * Jackson-friendly version of {@link Tag}. - */ -class JsonAdaptedTag { - - private final String tagName; - - /** - * Constructs a {@code JsonAdaptedTag} with the given {@code tagName}. - */ - @JsonCreator - public JsonAdaptedTag(String tagName) { - this.tagName = tagName; - } - - /** - * Converts a given {@code Tag} into this class for Jackson use. - */ - public JsonAdaptedTag(Tag source) { - tagName = source.tagName; - } - - @JsonValue - public String getTagName() { - return tagName; - } - - /** - * Converts this Jackson-friendly adapted tag object into the model's {@code Tag} object. - * - * @throws IllegalValueException if there were any data constraints violated in the adapted tag. - */ - public Tag toModelType() throws IllegalValueException { - if (!Tag.isValidTagName(tagName)) { - throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS); - } - return new Tag(tagName); - } - -} diff --git a/src/main/java/seedu/address/storage/JsonAddressBookStorage.java b/src/main/java/seedu/address/storage/JsonAddressBookStorage.java deleted file mode 100644 index 41e06f264e1..00000000000 --- a/src/main/java/seedu/address/storage/JsonAddressBookStorage.java +++ /dev/null @@ -1,80 +0,0 @@ -package seedu.address.storage; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; -import java.util.logging.Logger; - -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.commons.util.FileUtil; -import seedu.address.commons.util.JsonUtil; -import seedu.address.model.ReadOnlyAddressBook; - -/** - * A class to access AddressBook data stored as a json file on the hard disk. - */ -public class JsonAddressBookStorage implements AddressBookStorage { - - private static final Logger logger = LogsCenter.getLogger(JsonAddressBookStorage.class); - - private Path filePath; - - public JsonAddressBookStorage(Path filePath) { - this.filePath = filePath; - } - - public Path getAddressBookFilePath() { - return filePath; - } - - @Override - public Optional readAddressBook() throws DataLoadingException { - return readAddressBook(filePath); - } - - /** - * Similar to {@link #readAddressBook()}. - * - * @param filePath location of the data. Cannot be null. - * @throws DataLoadingException if loading the data from storage failed. - */ - public Optional readAddressBook(Path filePath) throws DataLoadingException { - requireNonNull(filePath); - - Optional jsonAddressBook = JsonUtil.readJsonFile( - filePath, JsonSerializableAddressBook.class); - if (!jsonAddressBook.isPresent()) { - return Optional.empty(); - } - - try { - return Optional.of(jsonAddressBook.get().toModelType()); - } catch (IllegalValueException ive) { - logger.info("Illegal values found in " + filePath + ": " + ive.getMessage()); - throw new DataLoadingException(ive); - } - } - - @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException { - saveAddressBook(addressBook, filePath); - } - - /** - * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)}. - * - * @param filePath location of the data. Cannot be null. - */ - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { - requireNonNull(addressBook); - requireNonNull(filePath); - - FileUtil.createIfMissing(filePath); - JsonUtil.saveJsonFile(new JsonSerializableAddressBook(addressBook), filePath); - } - -} diff --git a/src/main/java/seedu/address/storage/JsonSerializableAddressBook.java b/src/main/java/seedu/address/storage/JsonSerializableAddressBook.java deleted file mode 100644 index 5efd834091d..00000000000 --- a/src/main/java/seedu/address/storage/JsonSerializableAddressBook.java +++ /dev/null @@ -1,60 +0,0 @@ -package seedu.address.storage; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonRootName; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; - -/** - * An Immutable AddressBook that is serializable to JSON format. - */ -@JsonRootName(value = "addressbook") -class JsonSerializableAddressBook { - - public static final String MESSAGE_DUPLICATE_PERSON = "Persons list contains duplicate person(s)."; - - private final List persons = new ArrayList<>(); - - /** - * Constructs a {@code JsonSerializableAddressBook} with the given persons. - */ - @JsonCreator - public JsonSerializableAddressBook(@JsonProperty("persons") List persons) { - this.persons.addAll(persons); - } - - /** - * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use. - * - * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}. - */ - public JsonSerializableAddressBook(ReadOnlyAddressBook source) { - persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList())); - } - - /** - * Converts this address book into the model's {@code AddressBook} object. - * - * @throws IllegalValueException if there were any data constraints violated. - */ - public AddressBook toModelType() throws IllegalValueException { - AddressBook addressBook = new AddressBook(); - for (JsonAdaptedPerson jsonAdaptedPerson : persons) { - Person person = jsonAdaptedPerson.toModelType(); - if (addressBook.hasPerson(person)) { - throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON); - } - addressBook.addPerson(person); - } - return addressBook; - } - -} diff --git a/src/main/java/seedu/address/storage/JsonUserPrefsStorage.java b/src/main/java/seedu/address/storage/JsonUserPrefsStorage.java deleted file mode 100644 index 48a9754807d..00000000000 --- a/src/main/java/seedu/address/storage/JsonUserPrefsStorage.java +++ /dev/null @@ -1,47 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.commons.util.JsonUtil; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; - -/** - * A class to access UserPrefs stored in the hard disk as a json file - */ -public class JsonUserPrefsStorage implements UserPrefsStorage { - - private Path filePath; - - public JsonUserPrefsStorage(Path filePath) { - this.filePath = filePath; - } - - @Override - public Path getUserPrefsFilePath() { - return filePath; - } - - @Override - public Optional readUserPrefs() throws DataLoadingException { - return readUserPrefs(filePath); - } - - /** - * Similar to {@link #readUserPrefs()} - * @param prefsFilePath location of the data. Cannot be null. - * @throws DataLoadingException if the file format is not as expected. - */ - public Optional readUserPrefs(Path prefsFilePath) throws DataLoadingException { - return JsonUtil.readJsonFile(prefsFilePath, UserPrefs.class); - } - - @Override - public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException { - JsonUtil.saveJsonFile(userPrefs, filePath); - } - -} diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java deleted file mode 100644 index 9fba0c7a1d6..00000000000 --- a/src/main/java/seedu/address/storage/Storage.java +++ /dev/null @@ -1,32 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; - -/** - * API of the Storage component - */ -public interface Storage extends AddressBookStorage, UserPrefsStorage { - - @Override - Optional readUserPrefs() throws DataLoadingException; - - @Override - void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException; - - @Override - Path getAddressBookFilePath(); - - @Override - Optional readAddressBook() throws DataLoadingException; - - @Override - void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException; - -} diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java deleted file mode 100644 index 8b84a9024d5..00000000000 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ /dev/null @@ -1,78 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; -import java.util.logging.Logger; - -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; - -/** - * Manages storage of AddressBook data in local storage. - */ -public class StorageManager implements Storage { - - private static final Logger logger = LogsCenter.getLogger(StorageManager.class); - private AddressBookStorage addressBookStorage; - private UserPrefsStorage userPrefsStorage; - - /** - * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}. - */ - public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) { - this.addressBookStorage = addressBookStorage; - this.userPrefsStorage = userPrefsStorage; - } - - // ================ UserPrefs methods ============================== - - @Override - public Path getUserPrefsFilePath() { - return userPrefsStorage.getUserPrefsFilePath(); - } - - @Override - public Optional readUserPrefs() throws DataLoadingException { - return userPrefsStorage.readUserPrefs(); - } - - @Override - public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException { - userPrefsStorage.saveUserPrefs(userPrefs); - } - - - // ================ AddressBook methods ============================== - - @Override - public Path getAddressBookFilePath() { - return addressBookStorage.getAddressBookFilePath(); - } - - @Override - public Optional readAddressBook() throws DataLoadingException { - return readAddressBook(addressBookStorage.getAddressBookFilePath()); - } - - @Override - public Optional readAddressBook(Path filePath) throws DataLoadingException { - logger.fine("Attempting to read data from file: " + filePath); - return addressBookStorage.readAddressBook(filePath); - } - - @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException { - saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath()); - } - - @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { - logger.fine("Attempting to write to data file: " + filePath); - addressBookStorage.saveAddressBook(addressBook, filePath); - } - -} diff --git a/src/main/java/seedu/address/storage/UserPrefsStorage.java b/src/main/java/seedu/address/storage/UserPrefsStorage.java deleted file mode 100644 index e94ca422ea8..00000000000 --- a/src/main/java/seedu/address/storage/UserPrefsStorage.java +++ /dev/null @@ -1,36 +0,0 @@ -package seedu.address.storage; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Optional; - -import seedu.address.commons.exceptions.DataLoadingException; -import seedu.address.model.ReadOnlyUserPrefs; -import seedu.address.model.UserPrefs; - -/** - * Represents a storage for {@link seedu.address.model.UserPrefs}. - */ -public interface UserPrefsStorage { - - /** - * Returns the file path of the UserPrefs data file. - */ - Path getUserPrefsFilePath(); - - /** - * Returns UserPrefs data from storage. - * Returns {@code Optional.empty()} if storage file is not found. - * - * @throws DataLoadingException if the loading of data from preference file failed. - */ - Optional readUserPrefs() throws DataLoadingException; - - /** - * Saves the given {@link seedu.address.model.ReadOnlyUserPrefs} to the storage. - * @param userPrefs cannot be null. - * @throws IOException if there was any problem writing to the file. - */ - void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException; - -} diff --git a/src/main/java/seedu/address/ui/CommandBox.java b/src/main/java/seedu/address/ui/CommandBox.java deleted file mode 100644 index 9e75478664b..00000000000 --- a/src/main/java/seedu/address/ui/CommandBox.java +++ /dev/null @@ -1,85 +0,0 @@ -package seedu.address.ui; - -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.TextField; -import javafx.scene.layout.Region; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * The UI component that is responsible for receiving user command inputs. - */ -public class CommandBox extends UiPart { - - public static final String ERROR_STYLE_CLASS = "error"; - private static final String FXML = "CommandBox.fxml"; - - private final CommandExecutor commandExecutor; - - @FXML - private TextField commandTextField; - - /** - * Creates a {@code CommandBox} with the given {@code CommandExecutor}. - */ - public CommandBox(CommandExecutor commandExecutor) { - super(FXML); - this.commandExecutor = commandExecutor; - // calls #setStyleToDefault() whenever there is a change to the text of the command box. - commandTextField.textProperty().addListener((unused1, unused2, unused3) -> setStyleToDefault()); - } - - /** - * Handles the Enter button pressed event. - */ - @FXML - private void handleCommandEntered() { - String commandText = commandTextField.getText(); - if (commandText.equals("")) { - return; - } - - try { - commandExecutor.execute(commandText); - commandTextField.setText(""); - } catch (CommandException | ParseException e) { - setStyleToIndicateCommandFailure(); - } - } - - /** - * Sets the command box style to use the default style. - */ - private void setStyleToDefault() { - commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS); - } - - /** - * Sets the command box style to indicate a failed command. - */ - private void setStyleToIndicateCommandFailure() { - ObservableList styleClass = commandTextField.getStyleClass(); - - if (styleClass.contains(ERROR_STYLE_CLASS)) { - return; - } - - styleClass.add(ERROR_STYLE_CLASS); - } - - /** - * Represents a function that can execute commands. - */ - @FunctionalInterface - public interface CommandExecutor { - /** - * Executes the command and returns the result. - * - * @see seedu.address.logic.Logic#execute(String) - */ - CommandResult execute(String commandText) throws CommandException, ParseException; - } - -} diff --git a/src/main/java/seedu/address/ui/HelpWindow.java b/src/main/java/seedu/address/ui/HelpWindow.java deleted file mode 100644 index 3f16b2fcf26..00000000000 --- a/src/main/java/seedu/address/ui/HelpWindow.java +++ /dev/null @@ -1,102 +0,0 @@ -package seedu.address.ui; - -import java.util.logging.Logger; - -import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.input.Clipboard; -import javafx.scene.input.ClipboardContent; -import javafx.stage.Stage; -import seedu.address.commons.core.LogsCenter; - -/** - * Controller for a help page - */ -public class HelpWindow extends UiPart { - - public static final String USERGUIDE_URL = "https://se-education.org/addressbook-level3/UserGuide.html"; - public static final String HELP_MESSAGE = "Refer to the user guide: " + USERGUIDE_URL; - - private static final Logger logger = LogsCenter.getLogger(HelpWindow.class); - private static final String FXML = "HelpWindow.fxml"; - - @FXML - private Button copyButton; - - @FXML - private Label helpMessage; - - /** - * Creates a new HelpWindow. - * - * @param root Stage to use as the root of the HelpWindow. - */ - public HelpWindow(Stage root) { - super(FXML, root); - helpMessage.setText(HELP_MESSAGE); - } - - /** - * Creates a new HelpWindow. - */ - public HelpWindow() { - this(new Stage()); - } - - /** - * Shows the help window. - * @throws IllegalStateException - *
      - *
    • - * if this method is called on a thread other than the JavaFX Application Thread. - *
    • - *
    • - * if this method is called during animation or layout processing. - *
    • - *
    • - * if this method is called on the primary stage. - *
    • - *
    • - * if {@code dialogStage} is already showing. - *
    • - *
    - */ - public void show() { - logger.fine("Showing help page about the application."); - getRoot().show(); - getRoot().centerOnScreen(); - } - - /** - * Returns true if the help window is currently being shown. - */ - public boolean isShowing() { - return getRoot().isShowing(); - } - - /** - * Hides the help window. - */ - public void hide() { - getRoot().hide(); - } - - /** - * Focuses on the help window. - */ - public void focus() { - getRoot().requestFocus(); - } - - /** - * Copies the URL to the user guide to the clipboard. - */ - @FXML - private void copyUrl() { - final Clipboard clipboard = Clipboard.getSystemClipboard(); - final ClipboardContent url = new ClipboardContent(); - url.putString(USERGUIDE_URL); - clipboard.setContent(url); - } -} diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java deleted file mode 100644 index 79e74ef37c0..00000000000 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ /dev/null @@ -1,196 +0,0 @@ -package seedu.address.ui; - -import java.util.logging.Logger; - -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.control.MenuItem; -import javafx.scene.control.TextInputControl; -import javafx.scene.input.KeyCombination; -import javafx.scene.input.KeyEvent; -import javafx.scene.layout.StackPane; -import javafx.stage.Stage; -import seedu.address.commons.core.GuiSettings; -import seedu.address.commons.core.LogsCenter; -import seedu.address.logic.Logic; -import seedu.address.logic.commands.CommandResult; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.exceptions.ParseException; - -/** - * The Main Window. Provides the basic application layout containing - * a menu bar and space where other JavaFX elements can be placed. - */ -public class MainWindow extends UiPart { - - private static final String FXML = "MainWindow.fxml"; - - private final Logger logger = LogsCenter.getLogger(getClass()); - - private Stage primaryStage; - private Logic logic; - - // Independent Ui parts residing in this Ui container - private PersonListPanel personListPanel; - private ResultDisplay resultDisplay; - private HelpWindow helpWindow; - - @FXML - private StackPane commandBoxPlaceholder; - - @FXML - private MenuItem helpMenuItem; - - @FXML - private StackPane personListPanelPlaceholder; - - @FXML - private StackPane resultDisplayPlaceholder; - - @FXML - private StackPane statusbarPlaceholder; - - /** - * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}. - */ - public MainWindow(Stage primaryStage, Logic logic) { - super(FXML, primaryStage); - - // Set dependencies - this.primaryStage = primaryStage; - this.logic = logic; - - // Configure the UI - setWindowDefaultSize(logic.getGuiSettings()); - - setAccelerators(); - - helpWindow = new HelpWindow(); - } - - public Stage getPrimaryStage() { - return primaryStage; - } - - private void setAccelerators() { - setAccelerator(helpMenuItem, KeyCombination.valueOf("F1")); - } - - /** - * Sets the accelerator of a MenuItem. - * @param keyCombination the KeyCombination value of the accelerator - */ - private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) { - menuItem.setAccelerator(keyCombination); - - /* - * TODO: the code below can be removed once the bug reported here - * https://bugs.openjdk.java.net/browse/JDK-8131666 - * is fixed in later version of SDK. - * - * According to the bug report, TextInputControl (TextField, TextArea) will - * consume function-key events. Because CommandBox contains a TextField, and - * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will - * not work when the focus is in them because the key event is consumed by - * the TextInputControl(s). - * - * For now, we add following event filter to capture such key events and open - * help window purposely so to support accelerators even when focus is - * in CommandBox or ResultDisplay. - */ - getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -> { - if (event.getTarget() instanceof TextInputControl && keyCombination.match(event)) { - menuItem.getOnAction().handle(new ActionEvent()); - event.consume(); - } - }); - } - - /** - * Fills up all the placeholders of this window. - */ - void fillInnerParts() { - personListPanel = new PersonListPanel(logic.getFilteredPersonList()); - personListPanelPlaceholder.getChildren().add(personListPanel.getRoot()); - - resultDisplay = new ResultDisplay(); - resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot()); - - StatusBarFooter statusBarFooter = new StatusBarFooter(logic.getAddressBookFilePath()); - statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot()); - - CommandBox commandBox = new CommandBox(this::executeCommand); - commandBoxPlaceholder.getChildren().add(commandBox.getRoot()); - } - - /** - * Sets the default size based on {@code guiSettings}. - */ - private void setWindowDefaultSize(GuiSettings guiSettings) { - primaryStage.setHeight(guiSettings.getWindowHeight()); - primaryStage.setWidth(guiSettings.getWindowWidth()); - if (guiSettings.getWindowCoordinates() != null) { - primaryStage.setX(guiSettings.getWindowCoordinates().getX()); - primaryStage.setY(guiSettings.getWindowCoordinates().getY()); - } - } - - /** - * Opens the help window or focuses on it if it's already opened. - */ - @FXML - public void handleHelp() { - if (!helpWindow.isShowing()) { - helpWindow.show(); - } else { - helpWindow.focus(); - } - } - - void show() { - primaryStage.show(); - } - - /** - * Closes the application. - */ - @FXML - private void handleExit() { - GuiSettings guiSettings = new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(), - (int) primaryStage.getX(), (int) primaryStage.getY()); - logic.setGuiSettings(guiSettings); - helpWindow.hide(); - primaryStage.hide(); - } - - public PersonListPanel getPersonListPanel() { - return personListPanel; - } - - /** - * Executes the command and returns the result. - * - * @see seedu.address.logic.Logic#execute(String) - */ - private CommandResult executeCommand(String commandText) throws CommandException, ParseException { - try { - CommandResult commandResult = logic.execute(commandText); - logger.info("Result: " + commandResult.getFeedbackToUser()); - resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser()); - - if (commandResult.isShowHelp()) { - handleHelp(); - } - - if (commandResult.isExit()) { - handleExit(); - } - - return commandResult; - } catch (CommandException | ParseException e) { - logger.info("An error occurred while executing command: " + commandText); - resultDisplay.setFeedbackToUser(e.getMessage()); - throw e; - } - } -} diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java deleted file mode 100644 index 094c42cda82..00000000000 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ /dev/null @@ -1,59 +0,0 @@ -package seedu.address.ui; - -import java.util.Comparator; - -import javafx.fxml.FXML; -import javafx.scene.control.Label; -import javafx.scene.layout.FlowPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Region; -import seedu.address.model.person.Person; - -/** - * An UI component that displays information of a {@code Person}. - */ -public class PersonCard extends UiPart { - - private static final String FXML = "PersonListCard.fxml"; - - /** - * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. - * As a consequence, UI elements' variable names cannot be set to such keywords - * or an exception will be thrown by JavaFX during runtime. - * - * @see
    The issue on AddressBook level 4 - */ - - public final Person person; - - @FXML - private HBox cardPane; - @FXML - private Label name; - @FXML - private Label id; - @FXML - private Label phone; - @FXML - private Label address; - @FXML - private Label email; - @FXML - private FlowPane tags; - - /** - * Creates a {@code PersonCode} with the given {@code Person} and index to display. - */ - public PersonCard(Person person, int displayedIndex) { - super(FXML); - this.person = person; - id.setText(displayedIndex + ". "); - name.setText(person.getName().fullName); - phone.setText(person.getPhone().value); - address.setText(person.getAddress().value); - email.setText(person.getEmail().value); - person.getTags().stream() - .sorted(Comparator.comparing(tag -> tag.tagName)) - .forEach(tag -> tags.getChildren().add(new Label(tag.tagName))); - } -} diff --git a/src/main/java/seedu/address/ui/PersonListPanel.java b/src/main/java/seedu/address/ui/PersonListPanel.java deleted file mode 100644 index f4c501a897b..00000000000 --- a/src/main/java/seedu/address/ui/PersonListPanel.java +++ /dev/null @@ -1,49 +0,0 @@ -package seedu.address.ui; - -import java.util.logging.Logger; - -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.layout.Region; -import seedu.address.commons.core.LogsCenter; -import seedu.address.model.person.Person; - -/** - * Panel containing the list of persons. - */ -public class PersonListPanel extends UiPart { - private static final String FXML = "PersonListPanel.fxml"; - private final Logger logger = LogsCenter.getLogger(PersonListPanel.class); - - @FXML - private ListView personListView; - - /** - * Creates a {@code PersonListPanel} with the given {@code ObservableList}. - */ - public PersonListPanel(ObservableList personList) { - super(FXML); - personListView.setItems(personList); - personListView.setCellFactory(listView -> new PersonListViewCell()); - } - - /** - * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}. - */ - class PersonListViewCell extends ListCell { - @Override - protected void updateItem(Person person, boolean empty) { - super.updateItem(person, empty); - - if (empty || person == null) { - setGraphic(null); - setText(null); - } else { - setGraphic(new PersonCard(person, getIndex() + 1).getRoot()); - } - } - } - -} diff --git a/src/main/java/seedu/address/ui/ResultDisplay.java b/src/main/java/seedu/address/ui/ResultDisplay.java deleted file mode 100644 index 7d98e84eedf..00000000000 --- a/src/main/java/seedu/address/ui/ResultDisplay.java +++ /dev/null @@ -1,28 +0,0 @@ -package seedu.address.ui; - -import static java.util.Objects.requireNonNull; - -import javafx.fxml.FXML; -import javafx.scene.control.TextArea; -import javafx.scene.layout.Region; - -/** - * A ui for the status bar that is displayed at the header of the application. - */ -public class ResultDisplay extends UiPart { - - private static final String FXML = "ResultDisplay.fxml"; - - @FXML - private TextArea resultDisplay; - - public ResultDisplay() { - super(FXML); - } - - public void setFeedbackToUser(String feedbackToUser) { - requireNonNull(feedbackToUser); - resultDisplay.setText(feedbackToUser); - } - -} diff --git a/src/main/java/seedu/address/ui/StatusBarFooter.java b/src/main/java/seedu/address/ui/StatusBarFooter.java deleted file mode 100644 index b577f829423..00000000000 --- a/src/main/java/seedu/address/ui/StatusBarFooter.java +++ /dev/null @@ -1,28 +0,0 @@ -package seedu.address.ui; - -import java.nio.file.Path; -import java.nio.file.Paths; - -import javafx.fxml.FXML; -import javafx.scene.control.Label; -import javafx.scene.layout.Region; - -/** - * A ui for the status bar that is displayed at the footer of the application. - */ -public class StatusBarFooter extends UiPart { - - private static final String FXML = "StatusBarFooter.fxml"; - - @FXML - private Label saveLocationStatus; - - /** - * Creates a {@code StatusBarFooter} with the given {@code Path}. - */ - public StatusBarFooter(Path saveLocation) { - super(FXML); - saveLocationStatus.setText(Paths.get(".").resolve(saveLocation).toString()); - } - -} diff --git a/src/main/java/seedu/address/ui/Ui.java b/src/main/java/seedu/address/ui/Ui.java deleted file mode 100644 index 17aa0b494fe..00000000000 --- a/src/main/java/seedu/address/ui/Ui.java +++ /dev/null @@ -1,13 +0,0 @@ -package seedu.address.ui; - -import javafx.stage.Stage; - -/** - * API of UI component - */ -public interface Ui { - - /** Starts the UI (and the App). */ - void start(Stage primaryStage); - -} diff --git a/src/main/java/seedu/address/ui/UiManager.java b/src/main/java/seedu/address/ui/UiManager.java deleted file mode 100644 index fdf024138bc..00000000000 --- a/src/main/java/seedu/address/ui/UiManager.java +++ /dev/null @@ -1,88 +0,0 @@ -package seedu.address.ui; - -import java.util.logging.Logger; - -import javafx.application.Platform; -import javafx.scene.control.Alert; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.image.Image; -import javafx.stage.Stage; -import seedu.address.MainApp; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.util.StringUtil; -import seedu.address.logic.Logic; - -/** - * The manager of the UI component. - */ -public class UiManager implements Ui { - - public static final String ALERT_DIALOG_PANE_FIELD_ID = "alertDialogPane"; - - private static final Logger logger = LogsCenter.getLogger(UiManager.class); - private static final String ICON_APPLICATION = "/images/address_book_32.png"; - - private Logic logic; - private MainWindow mainWindow; - - /** - * Creates a {@code UiManager} with the given {@code Logic}. - */ - public UiManager(Logic logic) { - this.logic = logic; - } - - @Override - public void start(Stage primaryStage) { - logger.info("Starting UI..."); - - //Set the application icon. - primaryStage.getIcons().add(getImage(ICON_APPLICATION)); - - try { - mainWindow = new MainWindow(primaryStage, logic); - mainWindow.show(); //This should be called before creating other UI parts - mainWindow.fillInnerParts(); - - } catch (Throwable e) { - logger.severe(StringUtil.getDetails(e)); - showFatalErrorDialogAndShutdown("Fatal error during initializing", e); - } - } - - private Image getImage(String imagePath) { - return new Image(MainApp.class.getResourceAsStream(imagePath)); - } - - void showAlertDialogAndWait(Alert.AlertType type, String title, String headerText, String contentText) { - showAlertDialogAndWait(mainWindow.getPrimaryStage(), type, title, headerText, contentText); - } - - /** - * Shows an alert dialog on {@code owner} with the given parameters. - * This method only returns after the user has closed the alert dialog. - */ - private static void showAlertDialogAndWait(Stage owner, AlertType type, String title, String headerText, - String contentText) { - final Alert alert = new Alert(type); - alert.getDialogPane().getStylesheets().add("view/DarkTheme.css"); - alert.initOwner(owner); - alert.setTitle(title); - alert.setHeaderText(headerText); - alert.setContentText(contentText); - alert.getDialogPane().setId(ALERT_DIALOG_PANE_FIELD_ID); - alert.showAndWait(); - } - - /** - * Shows an error alert dialog with {@code title} and error message, {@code e}, - * and exits the application after the user has closed the alert dialog. - */ - private void showFatalErrorDialogAndShutdown(String title, Throwable e) { - logger.severe(title + " " + e.getMessage() + StringUtil.getDetails(e)); - showAlertDialogAndWait(Alert.AlertType.ERROR, title, e.getMessage(), e.toString()); - Platform.exit(); - System.exit(1); - } - -} diff --git a/src/main/java/seedu/address/ui/UiPart.java b/src/main/java/seedu/address/ui/UiPart.java deleted file mode 100644 index fc820e01a9c..00000000000 --- a/src/main/java/seedu/address/ui/UiPart.java +++ /dev/null @@ -1,88 +0,0 @@ -package seedu.address.ui; - -import static java.util.Objects.requireNonNull; - -import java.io.IOException; -import java.net.URL; - -import javafx.fxml.FXMLLoader; -import seedu.address.MainApp; - -/** - * Represents a distinct part of the UI. e.g. Windows, dialogs, panels, status bars, etc. - * It contains a scene graph with a root node of type {@code T}. - */ -public abstract class UiPart { - - /** Resource folder where FXML files are stored. */ - public static final String FXML_FILE_FOLDER = "/view/"; - - private final FXMLLoader fxmlLoader = new FXMLLoader(); - - /** - * Constructs a UiPart with the specified FXML file URL. - * The FXML file must not specify the {@code fx:controller} attribute. - */ - public UiPart(URL fxmlFileUrl) { - loadFxmlFile(fxmlFileUrl, null); - } - - /** - * Constructs a UiPart using the specified FXML file within {@link #FXML_FILE_FOLDER}. - * @see #UiPart(URL) - */ - public UiPart(String fxmlFileName) { - this(getFxmlFileUrl(fxmlFileName)); - } - - /** - * Constructs a UiPart with the specified FXML file URL and root object. - * The FXML file must not specify the {@code fx:controller} attribute. - */ - public UiPart(URL fxmlFileUrl, T root) { - loadFxmlFile(fxmlFileUrl, root); - } - - /** - * Constructs a UiPart with the specified FXML file within {@link #FXML_FILE_FOLDER} and root object. - * @see #UiPart(URL, T) - */ - public UiPart(String fxmlFileName, T root) { - this(getFxmlFileUrl(fxmlFileName), root); - } - - /** - * Returns the root object of the scene graph of this UiPart. - */ - public T getRoot() { - return fxmlLoader.getRoot(); - } - - /** - * Loads the object hierarchy from a FXML document. - * @param location Location of the FXML document. - * @param root Specifies the root of the object hierarchy. - */ - private void loadFxmlFile(URL location, T root) { - requireNonNull(location); - fxmlLoader.setLocation(location); - fxmlLoader.setController(this); - fxmlLoader.setRoot(root); - try { - fxmlLoader.load(); - } catch (IOException e) { - throw new AssertionError(e); - } - } - - /** - * Returns the FXML file URL for the specified FXML file name within {@link #FXML_FILE_FOLDER}. - */ - private static URL getFxmlFileUrl(String fxmlFileName) { - requireNonNull(fxmlFileName); - String fxmlFileNameWithFolder = FXML_FILE_FOLDER + fxmlFileName; - URL fxmlFileUrl = MainApp.class.getResource(fxmlFileNameWithFolder); - return requireNonNull(fxmlFileUrl); - } - -} diff --git a/src/main/resources/images/address_book_32.png b/src/main/resources/images/address_book_32.png deleted file mode 100644 index 29810cf1fd938e8568946ad28ee0c678564804b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4214 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 diff --git a/src/main/resources/images/calendar.png b/src/main/resources/images/calendar.png deleted file mode 100644 index 8b2bdf4f1c16ad2abafd46df82582aad743d1846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1215 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�CA>i!LlVRJ>huB}1y?$JIz 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 - - - - - - - - diff --git a/src/main/resources/view/DarkTheme.css b/src/main/resources/view/DarkTheme.css deleted file mode 100644 index 36e6b001cd8..00000000000 --- a/src/main/resources/view/DarkTheme.css +++ /dev/null @@ -1,352 +0,0 @@ -.background { - -fx-background-color: derive(#1d1d1d, 20%); - background-color: #383838; /* Used in the default.html file */ -} - -.label { - -fx-font-size: 11pt; - -fx-font-family: "Segoe UI Semibold"; - -fx-text-fill: #555555; - -fx-opacity: 0.9; -} - -.label-bright { - -fx-font-size: 11pt; - -fx-font-family: "Segoe UI Semibold"; - -fx-text-fill: white; - -fx-opacity: 1; -} - -.label-header { - -fx-font-size: 32pt; - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-opacity: 1; -} - -.text-field { - -fx-font-size: 12pt; - -fx-font-family: "Segoe UI Semibold"; -} - -.tab-pane { - -fx-padding: 0 0 0 1; -} - -.tab-pane .tab-header-area { - -fx-padding: 0 0 0 0; - -fx-min-height: 0; - -fx-max-height: 0; -} - -.table-view { - -fx-base: #1d1d1d; - -fx-control-inner-background: #1d1d1d; - -fx-background-color: #1d1d1d; - -fx-table-cell-border-color: transparent; - -fx-table-header-border-color: transparent; - -fx-padding: 5; -} - -.table-view .column-header-background { - -fx-background-color: transparent; -} - -.table-view .column-header, .table-view .filler { - -fx-size: 35; - -fx-border-width: 0 0 1 0; - -fx-background-color: transparent; - -fx-border-color: - transparent - transparent - derive(-fx-base, 80%) - transparent; - -fx-border-insets: 0 10 1 0; -} - -.table-view .column-header .label { - -fx-font-size: 20pt; - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-alignment: center-left; - -fx-opacity: 1; -} - -.table-view:focused .table-row-cell:filled:focused:selected { - -fx-background-color: -fx-focus-color; -} - -.split-pane:horizontal .split-pane-divider { - -fx-background-color: derive(#1d1d1d, 20%); - -fx-border-color: transparent transparent transparent #4d4d4d; -} - -.split-pane { - -fx-border-radius: 1; - -fx-border-width: 1; - -fx-background-color: derive(#1d1d1d, 20%); -} - -.list-view { - -fx-background-insets: 0; - -fx-padding: 0; - -fx-background-color: derive(#1d1d1d, 20%); -} - -.list-cell { - -fx-label-padding: 0 0 0 0; - -fx-graphic-text-gap : 0; - -fx-padding: 0 0 0 0; -} - -.list-cell:filled:even { - -fx-background-color: #3c3e3f; -} - -.list-cell:filled:odd { - -fx-background-color: #515658; -} - -.list-cell:filled:selected { - -fx-background-color: #424d5f; -} - -.list-cell:filled:selected #cardPane { - -fx-border-color: #3e7b91; - -fx-border-width: 1; -} - -.list-cell .label { - -fx-text-fill: white; -} - -.cell_big_label { - -fx-font-family: "Segoe UI Semibold"; - -fx-font-size: 16px; - -fx-text-fill: #010504; -} - -.cell_small_label { - -fx-font-family: "Segoe UI"; - -fx-font-size: 13px; - -fx-text-fill: #010504; -} - -.stack-pane { - -fx-background-color: derive(#1d1d1d, 20%); -} - -.pane-with-border { - -fx-background-color: derive(#1d1d1d, 20%); - -fx-border-color: derive(#1d1d1d, 10%); - -fx-border-top-width: 1px; -} - -.status-bar { - -fx-background-color: derive(#1d1d1d, 30%); -} - -.result-display { - -fx-background-color: transparent; - -fx-font-family: "Segoe UI Light"; - -fx-font-size: 13pt; - -fx-text-fill: white; -} - -.result-display .label { - -fx-text-fill: black !important; -} - -.status-bar .label { - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-padding: 4px; - -fx-pref-height: 30px; -} - -.status-bar-with-border { - -fx-background-color: derive(#1d1d1d, 30%); - -fx-border-color: derive(#1d1d1d, 25%); - -fx-border-width: 1px; -} - -.status-bar-with-border .label { - -fx-text-fill: white; -} - -.grid-pane { - -fx-background-color: derive(#1d1d1d, 30%); - -fx-border-color: derive(#1d1d1d, 30%); - -fx-border-width: 1px; -} - -.grid-pane .stack-pane { - -fx-background-color: derive(#1d1d1d, 30%); -} - -.context-menu { - -fx-background-color: derive(#1d1d1d, 50%); -} - -.context-menu .label { - -fx-text-fill: white; -} - -.menu-bar { - -fx-background-color: derive(#1d1d1d, 20%); -} - -.menu-bar .label { - -fx-font-size: 14pt; - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-opacity: 0.9; -} - -.menu .left-container { - -fx-background-color: black; -} - -/* - * Metro style Push Button - * Author: Pedro Duque Vieira - * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/ - */ -.button { - -fx-padding: 5 22 5 22; - -fx-border-color: #e2e2e2; - -fx-border-width: 2; - -fx-background-radius: 0; - -fx-background-color: #1d1d1d; - -fx-font-family: "Segoe UI", Helvetica, Arial, sans-serif; - -fx-font-size: 11pt; - -fx-text-fill: #d8d8d8; - -fx-background-insets: 0 0 0 0, 0, 1, 2; -} - -.button:hover { - -fx-background-color: #3a3a3a; -} - -.button:pressed, .button:default:hover:pressed { - -fx-background-color: white; - -fx-text-fill: #1d1d1d; -} - -.button:focused { - -fx-border-color: white, white; - -fx-border-width: 1, 1; - -fx-border-style: solid, segments(1, 1); - -fx-border-radius: 0, 0; - -fx-border-insets: 1 1 1 1, 0; -} - -.button:disabled, .button:default:disabled { - -fx-opacity: 0.4; - -fx-background-color: #1d1d1d; - -fx-text-fill: white; -} - -.button:default { - -fx-background-color: -fx-focus-color; - -fx-text-fill: #ffffff; -} - -.button:default:hover { - -fx-background-color: derive(-fx-focus-color, 30%); -} - -.dialog-pane { - -fx-background-color: #1d1d1d; -} - -.dialog-pane > *.button-bar > *.container { - -fx-background-color: #1d1d1d; -} - -.dialog-pane > *.label.content { - -fx-font-size: 14px; - -fx-font-weight: bold; - -fx-text-fill: white; -} - -.dialog-pane:header *.header-panel { - -fx-background-color: derive(#1d1d1d, 25%); -} - -.dialog-pane:header *.header-panel *.label { - -fx-font-size: 18px; - -fx-font-style: italic; - -fx-fill: white; - -fx-text-fill: white; -} - -.scroll-bar { - -fx-background-color: derive(#1d1d1d, 20%); -} - -.scroll-bar .thumb { - -fx-background-color: derive(#1d1d1d, 50%); - -fx-background-insets: 3; -} - -.scroll-bar .increment-button, .scroll-bar .decrement-button { - -fx-background-color: transparent; - -fx-padding: 0 0 0 0; -} - -.scroll-bar .increment-arrow, .scroll-bar .decrement-arrow { - -fx-shape: " "; -} - -.scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow { - -fx-padding: 1 8 1 8; -} - -.scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow { - -fx-padding: 8 1 8 1; -} - -#cardPane { - -fx-background-color: transparent; - -fx-border-width: 0; -} - -#commandTypeLabel { - -fx-font-size: 11px; - -fx-text-fill: #F70D1A; -} - -#commandTextField { - -fx-background-color: transparent #383838 transparent #383838; - -fx-background-insets: 0; - -fx-border-color: #383838 #383838 #ffffff #383838; - -fx-border-insets: 0; - -fx-border-width: 1; - -fx-font-family: "Segoe UI Light"; - -fx-font-size: 13pt; - -fx-text-fill: white; -} - -#filterField, #personListPanel, #personWebpage { - -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0); -} - -#resultDisplay .content { - -fx-background-color: transparent, #383838, transparent, #383838; - -fx-background-radius: 0; -} - -#tags { - -fx-hgap: 7; - -fx-vgap: 3; -} - -#tags .label { - -fx-text-fill: white; - -fx-background-color: #3e7b91; - -fx-padding: 1 3 1 3; - -fx-border-radius: 2; - -fx-background-radius: 2; - -fx-font-size: 11; -} diff --git a/src/main/resources/view/Extensions.css b/src/main/resources/view/Extensions.css deleted file mode 100644 index bfe82a85964..00000000000 --- a/src/main/resources/view/Extensions.css +++ /dev/null @@ -1,20 +0,0 @@ - -.error { - -fx-text-fill: #d06651 !important; /* The error class should always override the default text-fill style */ -} - -.list-cell:empty { - /* Empty cells will not have alternating colours */ - -fx-background: #383838; -} - -.tag-selector { - -fx-border-width: 1; - -fx-border-color: white; - -fx-border-radius: 3; - -fx-background-radius: 3; -} - -.tooltip-text { - -fx-text-fill: white; -} diff --git a/src/main/resources/view/HelpWindow.css b/src/main/resources/view/HelpWindow.css deleted file mode 100644 index 17e8a8722cd..00000000000 --- a/src/main/resources/view/HelpWindow.css +++ /dev/null @@ -1,19 +0,0 @@ -#copyButton, #helpMessage { - -fx-text-fill: white; -} - -#copyButton { - -fx-background-color: dimgray; -} - -#copyButton:hover { - -fx-background-color: gray; -} - -#copyButton:armed { - -fx-background-color: darkgray; -} - -#helpMessageContainer { - -fx-background-color: derive(#1d1d1d, 20%); -} diff --git a/src/main/resources/view/HelpWindow.fxml b/src/main/resources/view/HelpWindow.fxml deleted file mode 100644 index e01f330de33..00000000000 --- a/src/main/resources/view/HelpWindow.fxml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml deleted file mode 100644 index 7778f666a0a..00000000000 --- a/src/main/resources/view/MainWindow.fxml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/PersonListCard.fxml deleted file mode 100644 index 84e09833a87..00000000000 --- a/src/main/resources/view/PersonListCard.fxml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/view/PersonListPanel.fxml b/src/main/resources/view/PersonListPanel.fxml deleted file mode 100644 index a1bb6bbace8..00000000000 --- a/src/main/resources/view/PersonListPanel.fxml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/main/resources/view/ResultDisplay.fxml b/src/main/resources/view/ResultDisplay.fxml deleted file mode 100644 index 01b691792a9..00000000000 --- a/src/main/resources/view/ResultDisplay.fxml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - -