abapGit/src/persist/zcl_abapgit_persist_settings.clas.abap
Lars Hvam fc167ff3cd
update abaplint config to latest (#2480)
* update abaplint config to latest

* remove some descriptions

* remove more descriptions

* fixes

* fixes
2019-03-04 07:12:42 -08:00

96 lines
2.2 KiB
ABAP

CLASS zcl_abapgit_persist_settings DEFINITION
PUBLIC
CREATE PRIVATE .
PUBLIC SECTION.
METHODS modify
IMPORTING
!io_settings TYPE REF TO zcl_abapgit_settings
RAISING
zcx_abapgit_exception .
METHODS read
RETURNING
VALUE(ro_settings) TYPE REF TO zcl_abapgit_settings .
CLASS-METHODS get_instance
RETURNING
VALUE(ro_settings) TYPE REF TO zcl_abapgit_persist_settings .
PROTECTED SECTION.
PRIVATE SECTION.
DATA mo_settings TYPE REF TO zcl_abapgit_settings .
CLASS-DATA go_persist TYPE REF TO zcl_abapgit_persist_settings .
ENDCLASS.
CLASS ZCL_ABAPGIT_PERSIST_SETTINGS IMPLEMENTATION.
METHOD get_instance.
IF go_persist IS NOT BOUND.
CREATE OBJECT go_persist.
ENDIF.
ro_settings = go_persist.
ENDMETHOD.
METHOD 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 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.