@startuml
!include style.puml

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":TailorParser" as TailorParser LOGIC_COLOR
participant ":SetDefaultGroupCommandParser" as SetDefaultGroupCommandParser LOGIC_COLOR
participant ":SetDefaultGroupCommand" as SetDefaultGroupCommand LOGIC_COLOR
participant ":CommandResult" as CommandResult LOGIC_COLOR
end box

box Storage STORAGE_COLOR_T1
participant ":StorageManager" as sm STORAGE_COLOR
end box

box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
participant ":ModuleList" as ModuleList MODEL_COLOR
participant "cs2103t:Mod" as Mod MODEL_COLOR
end box

[-> LogicManager : execute(set-default-group)
activate LogicManager

LogicManager -> TailorParser : parseCommand(set-default-group))
activate TailorParser

create SetDefaultGroupCommandParser
TailorParser -> SetDefaultGroupCommandParser
activate SetDefaultGroupCommandParser

SetDefaultGroupCommandParser --> TailorParser
deactivate SetDefaultGroupCommandParser

TailorParser -> SetDefaultGroupCommandParser : parse()
activate SetDefaultGroupCommandParser

create SetDefaultGroupCommand
SetDefaultGroupCommandParser -> SetDefaultGroupCommand
activate SetDefaultGroupCommand

SetDefaultGroupCommand --> SetDefaultGroupCommandParser : s
deactivate SetDefaultGroupCommand

SetDefaultGroupCommandParser --> TailorParser
deactivate SetDefaultGroupCommandParser
'Hidden arrow to position the destroy marker below the end of the activation bar.
SetDefaultGroupCommandParser -[hidden]-> TailorParser
destroy SetDefaultGroupCommandParser

TailorParser --> LogicManager
deactivate TailorParser

LogicManager -> SetDefaultGroupCommand : execute()
activate SetDefaultGroupCommand

SetDefaultGroupCommand -> Model : doesModExist("CS2103T")
activate Model

Model --> SetDefaultGroupCommand :
deactivate Model

alt module exists
    SetDefaultGroupCommand -> ModuleList : getMod("CS2103T")
    activate ModuleList

    ModuleList --> SetDefaultGroupCommand :
    deactivate ModuleList

    SetDefaultGroupCommand -> Model : setDefaultGroup("CS2103T", "W12-1")
    activate Model

    Model -> Mod : setDefaultGroup("W12-1")
    activate Mod

    Mod --> Model
    deactivate Mod

    Model --> SetDefaultGroupCommand
    deactivate Model

else else
    SetDefaultGroupCommand -> ModuleList : add("CS2103T")
    activate ModuleList

    ModuleList --> SetDefaultGroupCommand
    deactivate ModuleList

        SetDefaultGroupCommand -> Model : setDefaultGroup("CS2103T", "W12-1")
        activate Model

        Model -> Mod : setDefaultGroup("W12-1")
        activate Mod

        Mod --> Model
        deactivate Mod

        Model --> SetDefaultGroupCommand
        deactivate Model
end

create CommandResult
SetDefaultGroupCommand -> CommandResult
activate CommandResult

CommandResult --> SetDefaultGroupCommand
deactivate CommandResult

SetDefaultGroupCommand --> LogicManager : result
deactivate SetDefaultGroupCommand

[<--LogicManager
deactivate LogicManager



@enduml
