abapGit/src/persist/zcl_abapgit_persist_factory.clas.abap
Marc Bernard 4c5244e458 Refactor: Persistence factory
This change moves persistence for background, packages, and users to the persistence factory.

Changing `zcl_abapgit_persistence_user=>get_instance( )` to `zcl_abapgit_persist_factory=>get_user( )` will be a separate PR.
2025-04-28 14:51:56 +00:00

114 lines
2.6 KiB
ABAP

CLASS zcl_abapgit_persist_factory DEFINITION
PUBLIC
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_persist_injector .
PUBLIC SECTION.
CLASS-METHODS get_repo
RETURNING
VALUE(ri_repo) TYPE REF TO zif_abapgit_persist_repo .
CLASS-METHODS get_repo_cs
RETURNING
VALUE(ri_repo_cs) TYPE REF TO zif_abapgit_persist_repo_cs .
CLASS-METHODS get_settings
RETURNING
VALUE(ri_settings) TYPE REF TO zif_abapgit_persist_settings .
CLASS-METHODS get_background
RETURNING
VALUE(ri_background) TYPE REF TO zif_abapgit_persist_background.
CLASS-METHODS get_packages
RETURNING
VALUE(ri_packages) TYPE REF TO zif_abapgit_persist_packages.
CLASS-METHODS get_user
IMPORTING
!iv_user TYPE sy-uname DEFAULT sy-uname
RETURNING
VALUE(ri_user) TYPE REF TO zif_abapgit_persist_user.
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-DATA gi_repo TYPE REF TO zif_abapgit_persist_repo .
CLASS-DATA gi_repo_cs TYPE REF TO zif_abapgit_persist_repo_cs .
CLASS-DATA gi_settings TYPE REF TO zif_abapgit_persist_settings .
CLASS-DATA gi_background TYPE REF TO zif_abapgit_persist_background.
CLASS-DATA gi_packages TYPE REF TO zif_abapgit_persist_packages.
CLASS-DATA gi_current_user TYPE REF TO zif_abapgit_persist_user.
ENDCLASS.
CLASS zcl_abapgit_persist_factory IMPLEMENTATION.
METHOD get_background.
IF gi_background IS INITIAL.
CREATE OBJECT gi_background TYPE zcl_abapgit_persist_background.
ENDIF.
ri_background = gi_background.
ENDMETHOD.
METHOD get_packages.
IF gi_packages IS INITIAL.
CREATE OBJECT gi_packages TYPE zcl_abapgit_persist_packages.
ENDIF.
ri_packages = gi_packages.
ENDMETHOD.
METHOD get_repo.
IF gi_repo IS INITIAL.
CREATE OBJECT gi_repo TYPE zcl_abapgit_persistence_repo.
ENDIF.
ri_repo = gi_repo.
ENDMETHOD.
METHOD get_repo_cs.
IF gi_repo_cs IS INITIAL.
CREATE OBJECT gi_repo_cs TYPE zcl_abapgit_persistence_repo.
ENDIF.
ri_repo_cs = gi_repo_cs.
ENDMETHOD.
METHOD get_settings.
IF gi_settings IS INITIAL.
CREATE OBJECT gi_settings TYPE zcl_abapgit_persist_settings.
ENDIF.
ri_settings = gi_settings.
ENDMETHOD.
METHOD get_user.
IF iv_user = sy-uname ##USER_OK.
IF gi_current_user IS NOT BOUND.
CREATE OBJECT gi_current_user TYPE zcl_abapgit_persistence_user.
ENDIF.
ri_user = gi_current_user.
ELSE.
CREATE OBJECT ri_user TYPE zcl_abapgit_persistence_user
EXPORTING
iv_user = iv_user.
ENDIF.
ENDMETHOD.
ENDCLASS.