@startuml
!include style.puml

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":FlashcardAppParser" as FlashcardAppParser LOGIC_COLOR
participant ":ImportCommandParser" as ImportCommandParser LOGIC_COLOR
participant "importCommand:ImportCommand" as ImportCommand LOGIC_COLOR
participant ":CommandResult" as CommandResult LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant "model:ModelManager" as Model MODEL_COLOR
end box

[-> LogicManager : execute("import myCards.csv")
activate LogicManager

LogicManager -> FlashcardAppParser : parseCommand("import myCards.csv")
activate FlashcardAppParser

create ImportCommandParser
FlashcardAppParser -> ImportCommandParser
activate ImportCommandParser

ImportCommandParser --> FlashcardAppParser
deactivate ImportCommandParser

FlashcardAppParser -> ImportCommandParser: parse("myCards.csv")
activate ImportCommandParser

create ImportCommand
ImportCommandParser -> ImportCommand
activate ImportCommand

ImportCommand --> ImportCommandParser : importCommand
deactivate ImportCommand

ImportCommandParser --> FlashcardAppParser: importCommand
deactivate ImportCommandParser

ImportCommandParser -[hidden]-> FlashcardAppParser: importCommand
destroy ImportCommandParser

FlashcardAppParser --> LogicManager : importCommand
deactivate FlashcardAppParser

FlashcardAppParser -[hidden]-> LogicManager : importCommand
destroy FlashcardAppParser

LogicManager -> ImportCommand : execute()
activate ImportCommand

ImportCommand -> Model : importFlashCards()
activate Model

Model --> ImportCommand
deactivate Model

ImportCommand -> CommandResult
activate CommandResult

CommandResult --> ImportCommand
deactivate CommandResult

ImportCommand --> LogicManager : result
deactivate ImportCommand

ImportCommand -[hidden]-> LogicManager : result
destroy ImportCommand

[<--LogicManager
deactivate LogicManager

@enduml