@startuml
!include style.puml

autoactivate on

box Model MODEL_COLOR_T1
participant ":AddressBook" as AddressBook MODEL_COLOR
participant ":PersonStreakList" as PersonStreakList MODEL_COLOR
participant ":PersonStreak" as PersonStreak <<class>> MODEL_COLOR
participant ":Person" as Person MODEL_COLOR
participant ":Streak" as Streak <<class>> MODEL_COLOR
end box

[-> AddressBook : setPerson(p, editedP)

AddressBook  -> PersonStreakList : setPerson(p, editedP)

PersonStreakList -> PersonStreakList : remove(p)
return

PersonStreakList -> PersonStreakList : add(editedP)

PersonStreakList -> PersonStreak : fromPerson(editedP)

PersonStreak -> Person : getGoal()
Person --> PersonStreak

PersonStreak -> Person : getMeetings()
Person --> PersonStreak

PersonStreak -> Streak : from(goal, meetings)
Streak --> PersonStreak : streak

PersonStreak --> PersonStreakList : personStreak
PersonStreakList --> PersonStreakList

PersonStreakList --> AddressBook : view of PersonStreakList

[<-- AddressBook

@enduml
