@startuml
!include style.puml
'https://plantuml.com/sequence-diagram

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":SocialiteParser" as SocialiteParser LOGIC_COLOR
participant ":FindCommandParser" as FindCommandParser LOGIC_COLOR
participant "f:FindCommand" as FindCommand LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
participant "p:ContainsKeywordsPredicate" as ContainsKeywordsPredicate MODEL_COLOR
end box

[-> LogicManager : execute(find KEYWORD)
activate LogicManager

LogicManager -> SocialiteParser : parseCommand(find KEYWORDS)
activate SocialiteParser

create FindCommandParser
SocialiteParser -> FindCommandParser
activate FindCommandParser

create FindCommand
FindCommandParser -> FindCommand : parse(KEYWORDS)
activate FindCommand

create ContainsKeywordsPredicate
FindCommand -> ContainsKeywordsPredicate
activate ContainsKeywordsPredicate
ContainsKeywordsPredicate --> FindCommand : p
deactivate ContainsKeywordsPredicate

FindCommand --> FindCommandParser : f
deactivate FindCommand

FindCommandParser --> SocialiteParser:f
deactivate FindCommandParser

SocialiteParser --> LogicManager:f
destroy FindCommandParser


LogicManager -> FindCommand : execute(model)
activate FindCommand

FindCommand -> Model : updateFilteredPersonList()
activate Model

Model --> FindCommand :
deactivate Model

FindCommand --> LogicManager : commandResult


[<--LogicManager
deactivate LogicManager
destroy FindCommand

@enduml