abapGit/src/persist/zcl_abapgit_persist_settings.clas.abap
2021-10-01 11:57:47 -04:00

76 lines
1.8 KiB
ABAP

CLASS zcl_abapgit_persist_settings DEFINITION
PUBLIC
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_persist_factory .
PUBLIC SECTION.
INTERFACES zif_abapgit_persist_settings .
PROTECTED SECTION.
PRIVATE SECTION.
DATA mo_settings TYPE REF TO zcl_abapgit_settings .
ENDCLASS.
CLASS ZCL_ABAPGIT_PERSIST_SETTINGS IMPLEMENTATION.
METHOD zif_abapgit_persist_settings~modify.
DATA: lv_settings TYPE string,
ls_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings.
lv_settings = io_settings->get_settings_xml( ).
zcl_abapgit_persistence_db=>get_instance( )->modify(
iv_type = zcl_abapgit_persistence_db=>c_type_settings
iv_value = ''
iv_data = lv_settings ).
ls_user_settings = io_settings->get_user_settings( ).
zcl_abapgit_persistence_user=>get_instance( )->set_settings( ls_user_settings ).
" Settings have been modified: Update Buffered Settings
IF mo_settings IS BOUND.
mo_settings->set_xml_settings( lv_settings ).
mo_settings->set_user_settings( ls_user_settings ).
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_persist_settings~read.
IF mo_settings IS BOUND.
" Return Buffered Settings
ro_settings = mo_settings.
RETURN.
ENDIF.
" Settings have changed or have not yet been loaded
CREATE OBJECT ro_settings.
TRY.
ro_settings->set_xml_settings(
zcl_abapgit_persistence_db=>get_instance( )->read(
iv_type = zcl_abapgit_persistence_db=>c_type_settings
iv_value = '' ) ).
ro_settings->set_user_settings( zcl_abapgit_persistence_user=>get_instance( )->get_settings( ) ).
CATCH zcx_abapgit_not_found zcx_abapgit_exception.
ro_settings->set_defaults( ).
ENDTRY.
mo_settings = ro_settings.
ENDMETHOD.
ENDCLASS.