@startuml
!include style.puml

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":DengueHotspotTrackerParser" as DengueHotspotTrackerParser LOGIC_COLOR
participant "u:UndoCommand" as UndoCommand LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
end box
box Storage #8900ff
participant ":TemporaryMemory" as TemporaryMemory #8980FE
end box
[-> LogicManager : execute(undo)
activate LogicManager

LogicManager -> DengueHotspotTrackerParser : parseCommand(undo)
activate DengueHotspotTrackerParser

create UndoCommand
DengueHotspotTrackerParser -> UndoCommand
activate UndoCommand

UndoCommand --> DengueHotspotTrackerParser
deactivate UndoCommand

DengueHotspotTrackerParser --> LogicManager : u
deactivate DengueHotspotTrackerParser

LogicManager -> UndoCommand : execute()
activate UndoCommand

UndoCommand -> Model : undo()
activate Model

Model -> TemporaryMemory : undo()
activate TemporaryMemory

TemporaryMemory -> TemporaryMemory :undo()
activate TemporaryMemory

TemporaryMemory -> TemporaryMemory :temporaryPop()
deactivate TemporaryMemory
TemporaryMemory --> Model :
deactivate TemporaryMemory

Model --> UndoCommand
deactivate Model

UndoCommand --> LogicManager : result
deactivate UndoCommand
UndoCommand -[hidden]-> LogicManager : result
destroy UndoCommand

[<--LogicManager
deactivate LogicManager
@enduml
