@startuml 3.1 User select a track to start listening (client)
actor Client
box "Client App" #LightBlue
    participant HMIMusic
    participant Data
    participant Communication
end box

actor Server 

Client ->> HMIMusic++: Select a track


alt Track on the local database
    HMIMusic -> Data++: downloadTrack(uuid : UUID)
    Data->>HMIMusic: DOWNLOADED_TRACK (Track)
    return void | Exception

else Track not on the local database 
    HMIMusic -> Data++: downloadTrack(uuid : UUID)
    Data -> Communication++: downloadTrack(uuid : UUID)
    Communication ->> Server++: GET_TRACK (UUID)
    Communication --> Data: void | Exception
    deactivate Data
    deactivate Communication

    Server ->> Communication++: DOWNLOAD_TRACK (Track) 
    Communication -> Data++: updateTrack(track : Track)
    Data->>HMIMusic: TRACK_READY_PLAY (Track) 
end 

@enduml



