mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Remove user setting migration (#4551)
This commit is contained in:
parent
155044e2a6
commit
bbeb1e7a58
|
@ -5,56 +5,20 @@ CLASS zcl_abapgit_persist_migrate DEFINITION PUBLIC CREATE PUBLIC.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE 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.
|
CONSTANTS c_text TYPE string VALUE 'Generated by abapGit' ##NO_TEXT.
|
||||||
|
|
||||||
CLASS-METHODS table_create
|
CLASS-METHODS table_create
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
CLASS-METHODS table_exists
|
CLASS-METHODS table_exists
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_exists) TYPE abap_bool .
|
VALUE(rv_exists) TYPE abap_bool.
|
||||||
CLASS-METHODS lock_create
|
CLASS-METHODS lock_create
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
CLASS-METHODS lock_exists
|
CLASS-METHODS lock_exists
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_exists) TYPE abap_bool .
|
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.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -63,59 +27,6 @@ ENDCLASS.
|
||||||
CLASS zcl_abapgit_persist_migrate IMPLEMENTATION.
|
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: <lv_user> LIKE LINE OF lt_abapgit_users,
|
|
||||||
<ls_setting_to_migrate> TYPE ty_setting_to_migrate,
|
|
||||||
<lg_user_specific_setting_val> 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 <lv_user>.
|
|
||||||
|
|
||||||
li_user_persistence = zcl_abapgit_persistence_user=>get_instance( <lv_user> ).
|
|
||||||
|
|
||||||
ls_user_settings = li_user_persistence->get_settings( ).
|
|
||||||
|
|
||||||
LOOP AT it_settings_to_migrate ASSIGNING <ls_setting_to_migrate>.
|
|
||||||
|
|
||||||
ASSIGN COMPONENT <ls_setting_to_migrate>-name
|
|
||||||
OF STRUCTURE ls_user_settings
|
|
||||||
TO <lg_user_specific_setting_val>.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
|
|
||||||
<lg_user_specific_setting_val> = <ls_setting_to_migrate>-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.
|
METHOD lock_create.
|
||||||
|
|
||||||
DATA: lv_obj_name TYPE tadir-obj_name,
|
DATA: lv_obj_name TYPE tadir-obj_name,
|
||||||
|
@ -207,7 +118,6 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION.
|
||||||
|
|
||||||
DATA: lv_viewname TYPE dd25l-viewname.
|
DATA: lv_viewname TYPE dd25l-viewname.
|
||||||
|
|
||||||
|
|
||||||
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
||||||
WHERE viewname = zcl_abapgit_persistence_db=>c_lock.
|
WHERE viewname = zcl_abapgit_persistence_db=>c_lock.
|
||||||
rv_exists = boolc( sy-subrc = 0 ).
|
rv_exists = boolc( sy-subrc = 0 ).
|
||||||
|
@ -215,78 +125,6 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD run.
|
||||||
|
|
||||||
IF table_exists( ) = abap_false.
|
IF table_exists( ) = abap_false.
|
||||||
|
@ -297,8 +135,6 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION.
|
||||||
lock_create( ).
|
lock_create( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
migrate_settings( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -407,29 +243,4 @@ CLASS zcl_abapgit_persist_migrate IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user