Sprint.kt

package nl.marc.devops.board

import nl.marc.devops.accounts.User
import nl.marc.devops.board.sprint_states.PlannedSprintState
import nl.marc.devops.board.sprint_states.SprintState

class Sprint {
    internal var state: SprintState = PlannedSprintState(this)

    var scrumMaster: User?
        get() = state.scrumMaster
        set(value) { state.scrumMaster = value }

    var name: String?
        get() = state.name
        set(value) { state.name = value }

    var dateRange: DateRange?
        get() = state.dateRange
        set(value) { state.dateRange = value }

    val backlogItems: Set<BacklogItem> by state::backlogItems

    fun addTask(backlogItem: BacklogItem) = state.addTask(backlogItem)

    fun startSprint() = state.startSprint()

    fun markFinished() = state.markFinished()

    fun onPipelineCompleted() = state.onPipelineCompleted()

    fun onDocumentAttached() = state.onDocumentAttached()
}