From 731a8d98d0cab7365918d0f058d12282e4da6e2d Mon Sep 17 00:00:00 2001 From: saraozn Date: Wed, 25 Oct 2023 16:18:34 +0800 Subject: [PATCH 1/5] fix comments --- src/main/java/seedu/address/model/property/PropName.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/model/property/PropName.java b/src/main/java/seedu/address/model/property/PropName.java index b5d8867d5be..8feef23c84f 100644 --- a/src/main/java/seedu/address/model/property/PropName.java +++ b/src/main/java/seedu/address/model/property/PropName.java @@ -10,14 +10,13 @@ public class PropName { public static final String MESSAGE_CONSTRAINTS = - "Names should only contain alphanumeric characters and spaces, and it should not be blank"; + "Names should 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 static final String VALIDATION_REGEX = "[^\\s-](.*)"; public final String fullName; /** From d178dfd2cc78f9a0cbc72b6e0cad2f0625e37848 Mon Sep 17 00:00:00 2001 From: Fredy Lawrence Date: Thu, 26 Oct 2023 20:06:10 +0800 Subject: [PATCH 2/5] Update Developer Guide --- docs/DeveloperGuide.md | 16 ++++++++++++++-- docs/UserGuide.md | 21 +++++++++++---------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2a5818c75c7..5b5e56dcb96 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -307,6 +307,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* *` | user with a lot of properties | find properties based on properties' details | access specific properties with the detail | | `* *` | user with a lot of customers | filter customers based on customers' details | get a list of specific customers with the detail | | `* *` | user with a lot of properties | filter properties based on properties' details | get a list of specific properties with the detail | +| `* *` | user with a lot of customers | get properties based on customers' details | get a list of specific properties with the detail satisfy the customer | +| `* *` | user with a lot of properties | get customers based on properties' details | get a list of specific customers with the detail satisfy the property | | `*` | user | add notes to customers' profiles | streamline customer management profile | | `*` | user | add notes to properties' profiles | streamline customer property profile | | `*` | experienced user using the application with new device | import and export customers' data | transfer customers' data across devices | @@ -387,7 +389,17 @@ Actor: Property Agent 2. Property agent enters the characteristics of the properties into the CLI 3. Property agent views the properties that adheres to the conditions given -**Use Case: UC08 - Find specific entity** +**Use Case: UC08 - Match customers to properties** + +System: PropertyMatch address book + +Actor: Property Agent + +1. Property agent identifies the characteristics the customers want that belong to properties +2. Property agent enters the characteristics of the customers into the CLI +3. Property agent views the customers that adheres to the conditions given + +**Use Case: UC09 - Find specific entity** System: PropertyMatch address book @@ -397,7 +409,7 @@ Actor: Property Agent 2. Property agent enters the entity index he wants 3. Property agent views the entity -**Use Case: UC09 - Import and export data** +**Use Case: UC10 - Import and export data** System: PropertyMatch address book diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 15c7920322d..0ca0ec1fb21 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -74,7 +74,8 @@ Parameter: * `a/ADDRESS` : The propAddress of the property (String) * `c/CHARACTERISTIC` (Optional) : The characteristics of the property (String) * `ph/NUMBER` : The contact number (Integer) -* `pr/PRICE` : The price of the property in psf (Number) : The price of the property in psf (Number) +* `pr/PRICE` : The price of the property in psf (Number) + Examples: * addprop n/Fredy a/randomAddress c/bright;sunny;big;square ph/91135235 pr/5 @@ -226,12 +227,12 @@ When command fails: Invalid command for misspelling of command ## Command summary -| Action | Format, Examples | -|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Addprop** | `addprop n/NAME a/ADDRESS [c/CHARACTERISTIC] ph/number pr/price`
e.g., `addprop n/Fredy a/randomAddress c/bright;sunny;big;square ph/91135235 pr/5` | -| **Addcust** | `addcust n/NAME p/PHONE e/EMAIL [b/BUDGET] [c/CHARACTERISTIC]`
e.g., `addcust n/Fredy p/12345678 e/fredylawrence@gmail.com b/100000` | -| **Delprop** | `delprop INDEX`
e.g., `delprop 3` | -| **Delcust** | `delcust INDEX`
e.g., `delcust 3` | -| **Listprop** | `listprop` | -| **Listcust** | `listcust` | -| **Exit** | `exit`| +| Action | Format, Examples | +|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Addprop** | `addprop n/NAME a/ADDRESS [c/CHARACTERISTIC] ph/number pr/price`
e.g., `addprop n/Property a/randomAddress c/bright;sunny;big;square ph/91135235 pr/5` | +| **Addcust** | `addcust n/NAME p/PHONE e/EMAIL [b/BUDGET] [c/CHARACTERISTIC]`
e.g., `addcust n/Fredy p/12345678 e/fredylawrence@gmail.com b/100000` | +| **Delprop** | `delprop INDEX`
e.g., `delprop 3` | +| **Delcust** | `delcust INDEX`
e.g., `delcust 3` | +| **Listprop** | `listprop` | +| **Listcust** | `listcust` | +| **Exit** | `exit` | From 3f327c2072afce443fd0c8a7dfb9a4965af87c23 Mon Sep 17 00:00:00 2001 From: Fredy Lawrence Date: Fri, 27 Oct 2023 04:42:04 +0800 Subject: [PATCH 3/5] Add Match Implemetation --- docs/DeveloperGuide.md | 33 +++++++++ .../MatchCustomerSequenceDiagram.puml | 67 ++++++++++++++++++ docs/images/MatchCustomerSequenceDiagram.png | Bin 0 -> 59665 bytes src/main/java/seedu/address/Main.java | 2 +- 4 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 docs/diagrams/MatchCustomerSequenceDiagram.puml create mode 100644 docs/images/MatchCustomerSequenceDiagram.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 5b5e56dcb96..21385c86e31 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -154,6 +154,39 @@ Classes used by multiple components are in the `seedu.addressbook.commons` packa This section describes some noteworthy details on how certain features are implemented. +### Matching for Customers and Properties +[Back to top](#table-of-contents) + +#### Motivation +The property agent may want to get all properties that satisfy the customers criteria or get all customers that want the properties characteristics. For example, the property agent want to get all properties that certain specified customer want and can afford. +Or, the property agent want to get all customers that might want to buy certain specified property. + +#### Implementation +The `MatchCustomerCommand` and `MacthPropertyCommand` classes extends the `Command` class. +They are used to match the details of a customer or property, respectively. +The command expects exactly one "Index" of the customer or property to be match, otherwise an error message will be displayed. +When the match command is inputted, the `MatchCustomerCommandParser` or `MatchPropertyCommandParser` classes are used to parse the user input and create the `MatchCustomerCommand` or `MacthPropertyCommand` objects respectively. +When these created command objects are executed by the `Logic Manager`, the `MatchCustomerCommand#execute(Model model)` or `MatchProeprtyCommand#execute(Model model)` method is called. +These methods will match the customer or property in the model, and return a `ComandResult` object. + +The following sequence diagram shows how the `MatchCustomerCommand` is executed. +![MatchCustomerSequenceDiagram](images/MatchCustomerSequenceDiagram.png) + +#### Design Consideration + +* *Alternative 1 (current choice):* `MatchPropertyCommand` and `MatchCustomerCommand` are separate, and both inherit from the `Command` class. + * Pros: + * Allows the property agent to match only customers or properties. + * The inheritance of the `Command` class allows us to keep to the Command design pattern, to easily add more types of edit commands in the future, without having to change the existing code. + * Cons: + * More code for each of the classes, which increases the size of the codebase + * More commands for the property agent to remember +* *Alternative 2:* A single `MacthCommand` class is used to match both customers and properties. + * Pros: + * Lesser commands for the property agent to remember + * Cons: + * Unable to match only customers or properties without specify it which increase the complexity of the commands + ### \[Proposed\] Undo/redo feature #### Proposed Implementation diff --git a/docs/diagrams/MatchCustomerSequenceDiagram.puml b/docs/diagrams/MatchCustomerSequenceDiagram.puml new file mode 100644 index 00000000000..4d8cbd77d0b --- /dev/null +++ b/docs/diagrams/MatchCustomerSequenceDiagram.puml @@ -0,0 +1,67 @@ +@startuml +!include style.puml + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":MatchCustomerCommandParser" as MatchCustomerCommandParser LOGIC_COLOR +participant "command:MatchCustomerCommand" as MatchCustomerCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + +[-> LogicManager : execute("matchcust 1") +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand("matchcust 1") +activate AddressBookParser + +create MatchCustomerCommandParser +AddressBookParser -> MatchCustomerCommandParser : new MatchCustomerCommandParser("1") +activate MatchCustomerCommandParser + +MatchCustomerCommandParser --> AddressBookParser +deactivate MatchCustomerCommandParser + +AddressBookParser -> MatchCustomerCommandParser : parse("1") +activate MatchCustomerCommandParser + +create MatchCustomerCommand +MatchCustomerCommandParser -> MatchCustomerCommand : new MatchCustomerCommand(1, MatchCustomerDescriptor) +activate MatchCustomerCommand + +MatchCustomerCommand --> MatchCustomerCommandParser : command +deactivate MatchCustomerCommand + +MatchCustomerCommandParser --> AddressBookParser : command +deactivate MatchCustomerCommandParser +'Hidden arrow to position the destroy marker below the end of the activation bar. +MatchCustomerCommandParser -[hidden]-> AddressBookParser +destroy MatchCustomerCommandParser + +AddressBookParser --> LogicManager : command +deactivate AddressBookParser + +LogicManager -> MatchCustomerCommand : execute() +activate MatchCustomerCommand + +MatchCustomerCommand -> Model : updateFilteredCustomersList() + +MatchCustomerCommand -> Model : updateFilteredPropertiesList(PREDICATE_SHOW_ALL_Properties) + +create CommandResult +MatchCustomerCommand -> CommandResult : new CommandResult(MatchedCustomer + "Matched with properties " + matchedProperties) +activate CommandResult + +CommandResult --> MatchCustomerCommand +deactivate CommandResult + +MatchCustomerCommand --> LogicManager : commandResult +deactivate MatchCustomerCommand + +[<--LogicManager : commandResult +deactivate LogicManager +@enduml \ No newline at end of file diff --git a/docs/images/MatchCustomerSequenceDiagram.png b/docs/images/MatchCustomerSequenceDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..727f6f8624705a861e3bef374b97bc263b41c9cf GIT binary patch literal 59665 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 GgZ}}ZyAdG( literal 0 HcmV?d00001 diff --git a/src/main/java/seedu/address/Main.java b/src/main/java/seedu/address/Main.java index ec1b7958746..af1f3975903 100644 --- a/src/main/java/seedu/address/Main.java +++ b/src/main/java/seedu/address/Main.java @@ -14,7 +14,7 @@ * 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 + * LauncherHelper will check fr 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. * From 87619b69114a6fb3939f4a1abc5de8f9087b0df3 Mon Sep 17 00:00:00 2001 From: Fredy Lawrence Date: Fri, 27 Oct 2023 04:45:21 +0800 Subject: [PATCH 4/5] solve EOF new line --- docs/diagrams/MatchCustomerSequenceDiagram.puml | 2 +- src/main/java/seedu/address/Main.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/diagrams/MatchCustomerSequenceDiagram.puml b/docs/diagrams/MatchCustomerSequenceDiagram.puml index 4d8cbd77d0b..ef385c5570d 100644 --- a/docs/diagrams/MatchCustomerSequenceDiagram.puml +++ b/docs/diagrams/MatchCustomerSequenceDiagram.puml @@ -64,4 +64,4 @@ deactivate MatchCustomerCommand [<--LogicManager : commandResult deactivate LogicManager -@enduml \ No newline at end of file +@enduml diff --git a/src/main/java/seedu/address/Main.java b/src/main/java/seedu/address/Main.java index af1f3975903..ec1b7958746 100644 --- a/src/main/java/seedu/address/Main.java +++ b/src/main/java/seedu/address/Main.java @@ -14,7 +14,7 @@ * 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 fr the javafx.graphics module to be present + * 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. * From d9bc04384bafbe76db5ae720f6538aa4bc1cc21e Mon Sep 17 00:00:00 2001 From: Fredy Lawrence Date: Fri, 27 Oct 2023 14:56:29 +0800 Subject: [PATCH 5/5] solve typo in match --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 21385c86e31..fb0e34fda81 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -162,7 +162,7 @@ The property agent may want to get all properties that satisfy the customers cri Or, the property agent want to get all customers that might want to buy certain specified property. #### Implementation -The `MatchCustomerCommand` and `MacthPropertyCommand` classes extends the `Command` class. +The `MatchCustomerCommand` and `MatchPropertyCommand` classes extends the `Command` class. They are used to match the details of a customer or property, respectively. The command expects exactly one "Index" of the customer or property to be match, otherwise an error message will be displayed. When the match command is inputted, the `MatchCustomerCommandParser` or `MatchPropertyCommandParser` classes are used to parse the user input and create the `MatchCustomerCommand` or `MacthPropertyCommand` objects respectively.