diff --git a/src/persist/zcl_abapgit_persist_migrate.clas.abap b/src/persist/zcl_abapgit_persist_migrate.clas.abap index 79134d1b5..f605b03c3 100644 --- a/src/persist/zcl_abapgit_persist_migrate.clas.abap +++ b/src/persist/zcl_abapgit_persist_migrate.clas.abap @@ -5,56 +5,20 @@ CLASS zcl_abapgit_persist_migrate DEFINITION PUBLIC CREATE PUBLIC. PROTECTED SECTION. PRIVATE SECTION. - TYPES: BEGIN OF ty_setting_to_migrate, - name TYPE string, - value TYPE string, - END OF ty_setting_to_migrate, - ty_settings_to_migrate TYPE STANDARD TABLE OF ty_setting_to_migrate - WITH NON-UNIQUE DEFAULT KEY. - CONSTANTS c_text TYPE string VALUE 'Generated by abapGit' ##NO_TEXT. CLASS-METHODS table_create RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. CLASS-METHODS table_exists RETURNING - VALUE(rv_exists) TYPE abap_bool . + VALUE(rv_exists) TYPE abap_bool. CLASS-METHODS lock_create RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. CLASS-METHODS lock_exists RETURNING - VALUE(rv_exists) TYPE abap_bool . - CLASS-METHODS migrate_settings - RAISING - zcx_abapgit_exception. - CLASS-METHODS migrate_setting - IMPORTING - iv_name TYPE string - CHANGING - ct_settings_to_migrate TYPE ty_settings_to_migrate - ci_document TYPE REF TO if_ixml_document. - CLASS-METHODS distribute_settings_to_users - IMPORTING - it_settings_to_migrate TYPE ty_settings_to_migrate - RAISING - zcx_abapgit_exception. - CLASS-METHODS update_global_settings - IMPORTING - ii_document TYPE REF TO if_ixml_document - RAISING - zcx_abapgit_exception. - CLASS-METHODS read_global_settings_xml - RETURNING - VALUE(rv_global_settings_xml) TYPE string - RAISING - zcx_abapgit_not_found. - CLASS-METHODS get_global_settings_document - RETURNING - VALUE(ri_global_settings_dom) TYPE REF TO if_ixml_document - RAISING - zcx_abapgit_not_found. + VALUE(rv_exists) TYPE abap_bool. ENDCLASS. @@ -63,59 +27,6 @@ ENDCLASS. CLASS zcl_abapgit_persist_migrate IMPLEMENTATION. - METHOD distribute_settings_to_users. - - TYPES: ty_char12 TYPE c LENGTH 12. - - DATA: lt_abapgit_users TYPE STANDARD TABLE OF ty_char12 - WITH NON-UNIQUE DEFAULT KEY, - ls_user_settings TYPE zif_abapgit_definitions=>ty_s_user_settings, - li_user_persistence TYPE REF TO zif_abapgit_persist_user. - - FIELD-SYMBOLS: LIKE LINE OF lt_abapgit_users, - TYPE ty_setting_to_migrate, - TYPE data. - - " distribute settings to all abapGit users - SELECT value FROM (zcl_abapgit_persistence_db=>c_tabname) - INTO TABLE lt_abapgit_users - WHERE type = zcl_abapgit_persistence_db=>c_type_user. - - LOOP AT lt_abapgit_users ASSIGNING . - - li_user_persistence = zcl_abapgit_persistence_user=>get_instance( ). - - ls_user_settings = li_user_persistence->get_settings( ). - - LOOP AT it_settings_to_migrate ASSIGNING . - - ASSIGN COMPONENT -name - OF STRUCTURE ls_user_settings - TO . - ASSERT sy-subrc = 0. - - = -value. - - ENDLOOP. - - li_user_persistence->set_settings( ls_user_settings ). - - ENDLOOP. - - ENDMETHOD. - - - METHOD get_global_settings_document. - - DATA: lv_global_settings_xml TYPE string. - - lv_global_settings_xml = read_global_settings_xml( ). - - ri_global_settings_dom = cl_ixml_80_20=>parse_to_document( stream_string = lv_global_settings_xml ). - - ENDMETHOD. - - METHOD lock_create. DATA: lv_obj_name TYPE tadir-obj_name, @@ -207,7 +118,6 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION. DATA: lv_viewname TYPE dd25l-viewname. - SELECT SINGLE viewname FROM dd25l INTO lv_viewname WHERE viewname = zcl_abapgit_persistence_db=>c_lock. rv_exists = boolc( sy-subrc = 0 ). @@ -215,78 +125,6 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION. ENDMETHOD. - METHOD migrate_setting. - - DATA: li_element TYPE REF TO if_ixml_element, - ls_setting_to_migrate LIKE LINE OF ct_settings_to_migrate. - - li_element = ci_document->find_from_name( iv_name ). - IF li_element IS BOUND. - - " The element is present in the global config. - " Therefore we have to migrate it - - ls_setting_to_migrate-name = iv_name. - ls_setting_to_migrate-value = li_element->get_value( ). - INSERT ls_setting_to_migrate INTO TABLE ct_settings_to_migrate. - - li_element->remove_node( ). - - ENDIF. - - ENDMETHOD. - - - METHOD migrate_settings. - - DATA: li_global_settings_document TYPE REF TO if_ixml_document, - lt_settings_to_migrate TYPE ty_settings_to_migrate, - lx_error TYPE REF TO zcx_abapgit_not_found. - - " migrate global settings to user specific settings - - TRY. - li_global_settings_document = get_global_settings_document( ). - - CATCH zcx_abapgit_not_found INTO lx_error. - " No global settings available, nothing todo. - RETURN. - ENDTRY. - - migrate_setting( - EXPORTING - iv_name = |MAX_LINES| - CHANGING - ct_settings_to_migrate = lt_settings_to_migrate - ci_document = li_global_settings_document ). - - migrate_setting( - EXPORTING - iv_name = |ADT_JUMP_ENABLED| - CHANGING - ct_settings_to_migrate = lt_settings_to_migrate - ci_document = li_global_settings_document ). - - IF lines( lt_settings_to_migrate ) > 0. - - distribute_settings_to_users( lt_settings_to_migrate ). - - update_global_settings( li_global_settings_document ). - - ENDIF. - - ENDMETHOD. - - - METHOD read_global_settings_xml. - - rv_global_settings_xml = zcl_abapgit_persistence_db=>get_instance( )->read( - iv_type = zcl_abapgit_persistence_db=>c_type_settings - iv_value = '' ). - - ENDMETHOD. - - METHOD run. IF table_exists( ) = abap_false. @@ -297,8 +135,6 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION. lock_create( ). ENDIF. - migrate_settings( ). - ENDMETHOD. @@ -407,29 +243,4 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION. ENDMETHOD. - - METHOD update_global_settings. - - DATA: li_ixml TYPE REF TO if_ixml, - lv_settings_xml TYPE string, - li_ostream TYPE REF TO if_ixml_ostream, - li_renderer TYPE REF TO if_ixml_renderer, - li_streamfactory TYPE REF TO if_ixml_stream_factory. - - " finally update global settings - " migrated elements are already removed from document - - li_ixml = cl_ixml=>create( ). - li_streamfactory = li_ixml->create_stream_factory( ). - li_ostream = li_streamfactory->create_ostream_cstring( lv_settings_xml ). - li_renderer = li_ixml->create_renderer( ostream = li_ostream - document = ii_document ). - li_renderer->render( ). - - zcl_abapgit_persistence_db=>get_instance( )->update( - iv_type = zcl_abapgit_persistence_db=>c_type_settings - iv_value = '' - iv_data = lv_settings_xml ). - - ENDMETHOD. ENDCLASS.