from core.lifecycle import Lifecycle


class LifecycleHelper:
    @classmethod
    def initialize_if_possible(cls, ls: Lifecycle) -> None:
        if isinstance(ls, Lifecycle) and ls.lifecycle_state.can_initialize(
            ls.lifecycle_state.phase
        ):
            ls.initialize()

    @classmethod
    def start_if_possible(cls, ls: Lifecycle) -> None:
        if isinstance(ls, Lifecycle) and ls.lifecycle_state.can_start(
            ls.lifecycle_state.phase
        ):
            ls.start()

    @classmethod
    def stop_if_possible(cls, ls: Lifecycle) -> None:
        if isinstance(ls, Lifecycle) and ls.lifecycle_state.can_stop(
            ls.lifecycle_state.phase
        ):
            ls.stop()

    @classmethod
    def dispose_if_possible(cls, ls: Lifecycle) -> None:
        if isinstance(ls, Lifecycle) and ls.lifecycle_state.can_dispose(
            ls.lifecycle_state.phase
        ):
            ls.dispose()