@startuml
!include style.puml

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
participant ":FindRecordCommandParser" as FindRecordCommandParser LOGIC_COLOR
participant ":FindRecordCommand" as FindRecordCommand LOGIC_COLOR
participant ":ParserUtil" as ParserUtil 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("rFind m/Paracetamol d/10-2022")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("rFind m/Paracetamol d/10-2022")
activate AddressBookParser

create FindRecordCommandParser
AddressBookParser -> FindRecordCommandParser
activate FindRecordCommandParser

FindRecordCommandParser --> AddressBookParser
deactivate FindRecordCommandParser

AddressBookParser -> FindRecordCommandParser : parse("m/Paracetamol d/10-2022")
activate FindRecordCommandParser

FindRecordCommandParser -> ParserUtil : parseDateKeyword
activate ParserUtil

ParserUtil --> FindRecordCommandParser : List<String> Keywords
FindRecordCommandParser -> ParserUtil : parseKeywords
ParserUtil --> FindRecordCommandParser : String date
deactivate ParserUtil

create FindRecordCommand
FindRecordCommandParser -> FindRecordCommand
activate FindRecordCommand

FindRecordCommand --> FindRecordCommandParser : r
deactivate FindRecordCommand

FindRecordCommandParser --> AddressBookParser : r
deactivate FindRecordCommandParser

FindRecordCommandParser -[hidden]-> AddressBookParser
destroy FindRecordCommandParser

AddressBookParser --> LogicManager : r
deactivate AddressBookParser

LogicManager -> FindRecordCommand : execute()
activate FindRecordCommand

create CommandResult
FindRecordCommand -> CommandResult
activate CommandResult

CommandResult --> FindRecordCommand
deactivate CommandResult

FindRecordCommand --> LogicManager : result
deactivate FindRecordCommand

[<--LogicManager
deactivate LogicManager
@enduml
