@startuml
!include style.puml
skinparam ArrowFontStyle plain

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":MediConnectParser" as MediConnectParser LOGIC_COLOR
participant "u:ListAppointmentCommand" as ListAppointmentCommand LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
participant "filteredAppointments:FilteredList" as FilteredAppointments MODEL_COLOR
end box

[-> LogicManager : execute("list_a s\\name o\\asc")
activate LogicManager

LogicManager -> MediConnectParser : parseCommand("list_a s\\name o\\asc")
activate MediConnectParser

create ListAppointmentCommand
MediConnectParser -> ListAppointmentCommand
activate ListAppointmentCommand

ListAppointmentCommand --> MediConnectParser
deactivate ListAppointmentCommand

MediConnectParser --> LogicManager : u
deactivate MediConnectParser

LogicManager -> ListAppointmentCommand : execute()
activate ListAppointmentCommand

ListAppointmentCommand -> Model : updateFilteredAppointmentList(predicate, comparator)
activate Model

Model -> FilteredAppointments : setPredicate(predicate)
activate FilteredAppointments

FilteredAppointments --> Model
deactivate FilteredAppointments

Model -> FilteredAppointments : sort(comparator)
activate FilteredAppointments

FilteredAppointments --> Model
deactivate FilteredAppointments

Model --> ListAppointmentCommand
deactivate Model

ListAppointmentCommand --> LogicManager : result
deactivate ListAppointmentCommand

ListAppointmentCommand -[hidden]-> LogicManager
destroy ListAppointmentCommand

[<-- LogicManager
deactivate LogicManager
@enduml
