mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
User specific abapGit settings
This commit is contained in:
parent
f6f18b550c
commit
6bbbf65c47
|
@ -4,6 +4,12 @@ CLASS zcl_abapgit_persist_migrate DEFINITION PUBLIC CREATE PUBLIC.
|
|||
CLASS-METHODS: run RAISING zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_settings_to_migrate,
|
||||
name TYPE string,
|
||||
value TYPE string,
|
||||
END OF ty_settings_to_migrate,
|
||||
tty_settings_to_migrate TYPE STANDARD TABLE OF ty_settings_to_migrate
|
||||
WITH NON-UNIQUE DEFAULT KEY.
|
||||
|
||||
CONSTANTS c_text TYPE string VALUE 'Generated by abapGit' ##NO_TEXT.
|
||||
|
||||
|
@ -19,11 +25,81 @@ CLASS zcl_abapgit_persist_migrate DEFINITION PUBLIC CREATE PUBLIC.
|
|||
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 tty_settings_to_migrate
|
||||
ci_document TYPE REF TO if_ixml_document.
|
||||
CLASS-METHODS distribute_settings_to_users
|
||||
IMPORTING
|
||||
it_settings_to_migrate TYPE tty_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_exception.
|
||||
CLASS-METHODS get_global_settings_document
|
||||
RETURNING
|
||||
VALUE(ri_global_settings_dom) TYPE REF TO if_ixml_document
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_persist_migrate IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD distribute_settings_to_users.
|
||||
|
||||
DATA: lt_abapgit_users TYPE STANDARD TABLE OF char12
|
||||
WITH NON-UNIQUE DEFAULT KEY,
|
||||
ls_user_settings TYPE zcl_abapgit_settings=>ty_s_user_settings,
|
||||
lo_user_persistence TYPE REF TO zcl_abapgit_persistence_user.
|
||||
|
||||
FIELD-SYMBOLS: <ls_user> LIKE LINE OF lt_abapgit_users,
|
||||
<ls_setting_to_migrate> TYPE zcl_abapgit_persist_migrate=>ty_settings_to_migrate,
|
||||
<user_specific_setting_value> 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 <ls_user>.
|
||||
|
||||
lo_user_persistence = zcl_abapgit_persistence_user=>get_instance( <ls_user> ).
|
||||
|
||||
ls_user_settings = lo_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 <user_specific_setting_value>.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
<user_specific_setting_value> = <ls_setting_to_migrate>-value.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
lo_user_persistence->set_settings( ls_user_settings ).
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD lock_create.
|
||||
|
@ -125,6 +201,62 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD migrate_setting.
|
||||
|
||||
DATA: lo_element TYPE REF TO if_ixml_element,
|
||||
ls_setting_to_migrate LIKE LINE OF ct_settings_to_migrate.
|
||||
|
||||
lo_element = ci_document->find_from_name( iv_name ).
|
||||
IF lo_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 = lo_element->get_value( ).
|
||||
INSERT ls_setting_to_migrate INTO TABLE ct_settings_to_migrate.
|
||||
|
||||
lo_element->remove_node( ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD migrate_settings.
|
||||
|
||||
DATA: li_global_settings_document TYPE REF TO if_ixml_document,
|
||||
lt_settings_to_migrate TYPE tty_settings_to_migrate.
|
||||
|
||||
" migrate global settings to user specific settings
|
||||
|
||||
li_global_settings_document = get_global_settings_document( ).
|
||||
|
||||
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 run.
|
||||
|
||||
IF table_exists( ) = abap_false.
|
||||
|
@ -135,6 +267,8 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
|
|||
lock_create( ).
|
||||
ENDIF.
|
||||
|
||||
migrate_settings( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -242,4 +376,47 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
|
|||
rv_exists = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_global_settings.
|
||||
|
||||
DATA: lv_settings_xml TYPE string.
|
||||
|
||||
" finally update global settings
|
||||
" migrated elements are already removed from document
|
||||
|
||||
lv_settings_xml = cl_ixml_80_20=>render_to_string( ii_document ).
|
||||
|
||||
zcl_abapgit_persistence_db=>get_instance( )->update(
|
||||
iv_type = zcl_abapgit_persistence_db=>c_type_settings
|
||||
iv_value = ''
|
||||
iv_data = lv_settings_xml ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read_global_settings_xml.
|
||||
|
||||
TRY.
|
||||
rv_global_settings_xml = zcl_abapgit_persistence_db=>get_instance( )->read(
|
||||
iv_type = zcl_abapgit_persistence_db=>c_type_settings
|
||||
iv_value = '' ).
|
||||
|
||||
CATCH zcx_abapgit_not_found INTO DATA(lx_not_found).
|
||||
zcx_abapgit_exception=>raise( lx_not_found->get_text( ) ).
|
||||
ENDTRY.
|
||||
|
||||
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.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -38,7 +38,8 @@ CLASS ZCL_ABAPGIT_PERSIST_SETTINGS IMPLEMENTATION.
|
|||
|
||||
METHOD modify.
|
||||
|
||||
DATA: lv_settings TYPE string.
|
||||
DATA: lv_settings TYPE string,
|
||||
ls_user_settings TYPE zcl_abapgit_settings=>ty_s_user_settings.
|
||||
|
||||
|
||||
lv_settings = io_settings->get_settings_xml( ).
|
||||
|
@ -48,9 +49,14 @@ CLASS ZCL_ABAPGIT_PERSIST_SETTINGS IMPLEMENTATION.
|
|||
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.
|
||||
|
@ -74,6 +80,8 @@ CLASS ZCL_ABAPGIT_PERSIST_SETTINGS IMPLEMENTATION.
|
|||
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( ).
|
||||
|
|
|
@ -140,6 +140,16 @@ CLASS zcl_abapgit_persistence_user DEFINITION
|
|||
VALUE(rv_hide) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS get_settings
|
||||
RETURNING
|
||||
VALUE(rs_user_settings) TYPE zcl_abapgit_settings=>ty_s_user_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS set_settings
|
||||
IMPORTING
|
||||
is_user_settings TYPE zcl_abapgit_settings=>ty_s_user_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
PRIVATE SECTION.
|
||||
|
||||
TYPES:
|
||||
|
@ -160,6 +170,7 @@ CLASS zcl_abapgit_persistence_user DEFINITION
|
|||
diff_unified TYPE abap_bool,
|
||||
favorites TYPE tt_favorites,
|
||||
repo_config TYPE ty_repo_config_tt,
|
||||
settings TYPE zcl_abapgit_settings=>ty_s_user_settings,
|
||||
END OF ty_user .
|
||||
|
||||
DATA mv_user TYPE xubname .
|
||||
|
@ -203,11 +214,12 @@ CLASS zcl_abapgit_persistence_user DEFINITION
|
|||
!is_repo_config TYPE ty_repo_config
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_persistence_user IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -554,4 +566,25 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_USER IMPLEMENTATION.
|
|||
COMMIT WORK AND WAIT.
|
||||
|
||||
ENDMETHOD. "update_repo_config
|
||||
|
||||
METHOD get_settings.
|
||||
|
||||
DATA: ls_user TYPE ty_user.
|
||||
|
||||
ls_user = read( ).
|
||||
|
||||
rs_user_settings = ls_user-settings.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_settings.
|
||||
|
||||
DATA: ls_user TYPE ty_user.
|
||||
|
||||
ls_user = read( ).
|
||||
ls_user-settings = is_user_settings.
|
||||
update( ls_user ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -48,12 +48,18 @@ CLASS zcl_abapgit_gui_page_settings DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS read_settings.
|
||||
METHODS render_section_begin
|
||||
IMPORTING
|
||||
iv_header TYPE csequence
|
||||
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html.
|
||||
METHODS render_section_end
|
||||
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_page_settings IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD build_settings.
|
||||
|
@ -215,15 +221,18 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
|||
read_settings( ).
|
||||
|
||||
ro_html->add( render_form_begin( ) ).
|
||||
ro_html->add( render_section_begin( |Global settings| ) ).
|
||||
ro_html->add( render_proxy( ) ).
|
||||
ro_html->add( |<hr>| ).
|
||||
ro_html->add( render_max_lines( ) ).
|
||||
ro_html->add( |<hr>| ).
|
||||
ro_html->add( render_adt_jump_enabled( ) ).
|
||||
ro_html->add( |<hr>| ).
|
||||
ro_html->add( render_commit_msg( ) ).
|
||||
ro_html->add( |<hr>| ).
|
||||
ro_html->add( render_development_internals( ) ).
|
||||
ro_html->add( render_section_end( ) ).
|
||||
ro_html->add( render_section_begin( |User specific settings| ) ).
|
||||
ro_html->add( render_max_lines( ) ).
|
||||
ro_html->add( |<hr>| ).
|
||||
ro_html->add( render_adt_jump_enabled( ) ).
|
||||
ro_html->add( render_section_end( ) ).
|
||||
ro_html->add( render_form_end( ) ).
|
||||
|
||||
ENDMETHOD. "render_content
|
||||
|
@ -347,4 +356,23 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SETTINGS IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD render_section_begin.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( |<h1>{ iv_header }</h1>| ).
|
||||
ro_html->add( |<div class="settings_section">| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_section_end.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( |</div>| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -348,6 +348,10 @@ div.settings_container {
|
|||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
div.settings_section {
|
||||
margin-left:50px
|
||||
}
|
||||
|
||||
/* DIFF */
|
||||
div.diff {
|
||||
background-color: #f2f2f2;
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES: BEGIN OF ty_s_user_settings,
|
||||
max_lines TYPE i,
|
||||
adt_jump_enabled TYPE abap_bool,
|
||||
END OF ty_s_user_settings.
|
||||
CONSTANTS: c_commitmsg_comment_length_dft TYPE i VALUE 50.
|
||||
CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72.
|
||||
|
||||
METHODS: set_proxy_url
|
||||
IMPORTING
|
||||
iv_url TYPE string,
|
||||
METHODS:
|
||||
set_proxy_url
|
||||
IMPORTING
|
||||
iv_url TYPE string,
|
||||
set_proxy_port
|
||||
IMPORTING
|
||||
iv_port TYPE string,
|
||||
|
@ -62,12 +67,20 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
|
|||
VALUE(ev_settings_xml) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
get_user_settings
|
||||
RETURNING
|
||||
VALUE(rs_settings) TYPE zcl_abapgit_settings=>ty_s_user_settings
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
set_xml_settings
|
||||
IMPORTING
|
||||
iv_settings_xml TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
set_defaults.
|
||||
set_defaults,
|
||||
set_user_settings
|
||||
IMPORTING
|
||||
is_user_settings TYPE ty_s_user_settings.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_s_settings,
|
||||
|
@ -76,22 +89,21 @@ CLASS zcl_abapgit_settings DEFINITION PUBLIC CREATE PUBLIC.
|
|||
proxy_auth TYPE string,
|
||||
run_critical_tests TYPE abap_bool,
|
||||
experimental_features TYPE abap_bool,
|
||||
max_lines TYPE i,
|
||||
adt_jump_enabled TYPE abap_bool,
|
||||
commitmsg_comment_length TYPE i,
|
||||
commitmsg_body_size TYPE i,
|
||||
END OF ty_s_settings.
|
||||
DATA: ms_settings TYPE ty_s_settings.
|
||||
DATA: ms_settings TYPE ty_s_settings,
|
||||
ms_user_settings TYPE ty_s_user_settings.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_settings IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_adt_jump_enabled.
|
||||
rv_adt_jump_enabled = ms_settings-adt_jump_enabled.
|
||||
rv_adt_jump_enabled = ms_user_settings-adt_jump_enabled.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -111,7 +123,7 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD get_max_lines.
|
||||
rv_lines = ms_settings-max_lines.
|
||||
rv_lines = ms_user_settings-max_lines.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -150,8 +162,9 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
METHOD set_adt_jump_enanbled.
|
||||
ms_settings-adt_jump_enabled = iv_adt_jump_enabled.
|
||||
ms_user_settings-adt_jump_enabled = iv_adt_jump_enabled.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -186,7 +199,7 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD set_max_lines.
|
||||
ms_settings-max_lines = iv_lines.
|
||||
ms_user_settings-max_lines = iv_lines.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -210,6 +223,11 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_user_settings.
|
||||
ms_user_settings = is_user_settings.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_xml_settings.
|
||||
|
||||
DATA: lo_input TYPE REF TO zcl_abapgit_xml_input.
|
||||
|
@ -226,4 +244,9 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
|
|||
cg_data = ms_settings ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_user_settings.
|
||||
rs_settings = ms_user_settings.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
Loading…
Reference in New Issue
Block a user