From 7258fdc315ea85c0cae5f3a3e8273038d6fbe7f7 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Sat, 21 May 2022 08:13:41 +0200 Subject: [PATCH] Repo view: Show icon for different source system (#5514) In case an objects originates from a different system (`<> sy-sysid`), an icon will be shown after the object. On hover, you can see the id of the original system. Closes https://github.com/abapGit/abapGit/issues/3865 --- src/objects/core/zabapgit_parallel.fugr.xml | 9 ++++ ...lel.fugr.z_abapgit_serialize_parallel.abap | 8 ++-- .../core/zcl_abapgit_file_status.clas.abap | 23 ++++++---- .../core/zcl_abapgit_serialize.clas.abap | 7 +-- .../zcl_abapgit_repo_content_list.clas.abap | 26 ++++++----- .../zcl_abapgit_gui_page_repo_view.clas.abap | 22 ++++++++- src/zif_abapgit_definitions.intf.abap | 46 ++++++++++--------- 7 files changed, 90 insertions(+), 51 deletions(-) diff --git a/src/objects/core/zabapgit_parallel.fugr.xml b/src/objects/core/zabapgit_parallel.fugr.xml index c2321b601..e9da2cde5 100644 --- a/src/objects/core/zabapgit_parallel.fugr.xml +++ b/src/objects/core/zabapgit_parallel.fugr.xml @@ -96,6 +96,10 @@ IV_DEVCLASS TADIR-DEVCLASS + + IV_SRCSYSTEM + TADIR-SRCSYSTEM + IV_LANGUAGE SY-LANGU @@ -144,6 +148,11 @@ P Package + + IV_SRCSYSTEM + P + Original System of Object + IV_LANGUAGE P diff --git a/src/objects/core/zabapgit_parallel.fugr.z_abapgit_serialize_parallel.abap b/src/objects/core/zabapgit_parallel.fugr.z_abapgit_serialize_parallel.abap index 43b81d8d3..b8be23ef9 100644 --- a/src/objects/core/zabapgit_parallel.fugr.z_abapgit_serialize_parallel.abap +++ b/src/objects/core/zabapgit_parallel.fugr.z_abapgit_serialize_parallel.abap @@ -5,6 +5,7 @@ FUNCTION z_abapgit_serialize_parallel. *" VALUE(IV_OBJ_TYPE) TYPE TADIR-OBJECT *" VALUE(IV_OBJ_NAME) TYPE TADIR-OBJ_NAME *" VALUE(IV_DEVCLASS) TYPE TADIR-DEVCLASS +*" VALUE(IV_SRCSYSTEM) TYPE TADIR-SRCSYSTEM *" VALUE(IV_LANGUAGE) TYPE SY-LANGU *" VALUE(IV_PATH) TYPE STRING *" VALUE(IV_MAIN_LANGUAGE_ONLY) TYPE CHAR1 @@ -22,9 +23,10 @@ FUNCTION z_abapgit_serialize_parallel. ls_files TYPE zcl_abapgit_objects=>ty_serialization. TRY. - ls_item-obj_type = iv_obj_type. - ls_item-obj_name = iv_obj_name. - ls_item-devclass = iv_devclass. + ls_item-obj_type = iv_obj_type. + ls_item-obj_name = iv_obj_name. + ls_item-devclass = iv_devclass. + ls_item-srcsystem = iv_srcsystem. ls_files = zcl_abapgit_objects=>serialize( is_item = ls_item diff --git a/src/objects/core/zcl_abapgit_file_status.clas.abap b/src/objects/core/zcl_abapgit_file_status.clas.abap index 94baa87f3..6f929a697 100644 --- a/src/objects/core/zcl_abapgit_file_status.clas.abap +++ b/src/objects/core/zcl_abapgit_file_status.clas.abap @@ -134,7 +134,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_FILE_STATUS IMPLEMENTATION. +CLASS zcl_abapgit_file_status IMPLEMENTATION. METHOD build_existing. @@ -142,9 +142,10 @@ CLASS ZCL_ABAPGIT_FILE_STATUS IMPLEMENTATION. DATA: ls_file_sig LIKE LINE OF it_state. " Item - rs_result-obj_type = is_local-item-obj_type. - rs_result-obj_name = is_local-item-obj_name. - rs_result-package = is_local-item-devclass. + rs_result-obj_type = is_local-item-obj_type. + rs_result-obj_name = is_local-item-obj_name. + rs_result-package = is_local-item-devclass. + rs_result-srcsystem = is_local-item-srcsystem. " File rs_result-path = is_local-file-path. @@ -188,9 +189,10 @@ CLASS ZCL_ABAPGIT_FILE_STATUS IMPLEMENTATION. METHOD build_new_local. " Item - rs_result-obj_type = is_local-item-obj_type. - rs_result-obj_name = is_local-item-obj_name. - rs_result-package = is_local-item-devclass. + rs_result-obj_type = is_local-item-obj_type. + rs_result-obj_name = is_local-item-obj_name. + rs_result-package = is_local-item-devclass. + rs_result-srcsystem = is_local-item-srcsystem. " File rs_result-path = is_local-file-path. @@ -231,9 +233,10 @@ CLASS ZCL_ABAPGIT_FILE_STATUS IMPLEMENTATION. IF sy-subrc = 0. " Completely new (xml, abap) and new file in an existing object - rs_result-obj_type = ls_item-obj_type. - rs_result-obj_name = ls_item-obj_name. - rs_result-package = ls_item-devclass. + rs_result-obj_type = ls_item-obj_type. + rs_result-obj_name = ls_item-obj_name. + rs_result-package = ls_item-devclass. + rs_result-srcsystem = sy-sysid. READ TABLE it_state INTO ls_file_sig WITH KEY path = is_remote-path filename = is_remote-filename diff --git a/src/objects/core/zcl_abapgit_serialize.clas.abap b/src/objects/core/zcl_abapgit_serialize.clas.abap index 45b870eb0..24b634635 100644 --- a/src/objects/core/zcl_abapgit_serialize.clas.abap +++ b/src/objects/core/zcl_abapgit_serialize.clas.abap @@ -497,9 +497,10 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. ls_file_item TYPE zif_abapgit_objects=>ty_serialization. - ls_file_item-item-obj_type = is_tadir-object. - ls_file_item-item-obj_name = is_tadir-obj_name. - ls_file_item-item-devclass = is_tadir-devclass. + ls_file_item-item-obj_type = is_tadir-object. + ls_file_item-item-obj_name = is_tadir-obj_name. + ls_file_item-item-devclass = is_tadir-devclass. + ls_file_item-item-srcsystem = is_tadir-srcsystem. TRY. ls_file_item = zcl_abapgit_objects=>serialize( diff --git a/src/repo/zcl_abapgit_repo_content_list.clas.abap b/src/repo/zcl_abapgit_repo_content_list.clas.abap index 3ca95c9c3..149a5c4cf 100644 --- a/src/repo/zcl_abapgit_repo_content_list.clas.abap +++ b/src/repo/zcl_abapgit_repo_content_list.clas.abap @@ -57,7 +57,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION. +CLASS zcl_abapgit_repo_content_list IMPLEMENTATION. METHOD build_folders. @@ -127,15 +127,16 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION. LOOP AT lt_tadir ASSIGNING . APPEND INITIAL LINE TO rt_repo_items ASSIGNING . - -obj_type = -object. - -obj_name = -obj_name. - -path = -path. + -obj_type = -object. + -obj_name = -obj_name. + -path = -path. + -srcsystem = -srcsystem. MOVE-CORRESPONDING TO ls_item. -inactive = boolc( zcl_abapgit_objects=>is_active( ls_item ) = abap_false ). IF -inactive = abap_true. -sortkey = c_sortkey-inactive. ELSE. - -sortkey = c_sortkey-default. " Default sort key + -sortkey = c_sortkey-default. " Default sort key ENDIF. IF -obj_type IS NOT INITIAL. @@ -153,7 +154,7 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION. METHOD build_repo_items_with_remote. DATA: - lo_state TYPE REF TO zcl_abapgit_item_state, + lo_state TYPE REF TO zcl_abapgit_item_state, ls_file TYPE zif_abapgit_definitions=>ty_repo_file, lt_status TYPE zif_abapgit_definitions=>ty_results_tt, ls_item TYPE zif_abapgit_definitions=>ty_item, @@ -169,12 +170,13 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION. LOOP AT lt_status ASSIGNING . AT NEW obj_name. "obj_type + obj_name APPEND INITIAL LINE TO rt_repo_items ASSIGNING . - -obj_type = -obj_type. - -obj_name = -obj_name. - -inactive = -inactive. - -sortkey = c_sortkey-default. " Default sort key - -changes = 0. - -path = -path. + -obj_type = -obj_type. + -obj_name = -obj_name. + -inactive = -inactive. + -sortkey = c_sortkey-default. " Default sort key + -changes = 0. + -path = -path. + -srcsystem = -srcsystem. CREATE OBJECT lo_state. ENDAT. diff --git a/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap index 331d4d670..65a396dcd 100644 --- a/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap @@ -121,6 +121,11 @@ CLASS zcl_abapgit_gui_page_repo_view DEFINITION !is_item TYPE zif_abapgit_definitions=>ty_repo_item RETURNING VALUE(rv_inactive_html_code) TYPE string . + METHODS build_srcsystem_code + IMPORTING + !is_item TYPE zif_abapgit_definitions=>ty_repo_item + RETURNING + VALUE(rv_srcsystem_html_code) TYPE string . METHODS open_in_main_language RAISING zcx_abapgit_exception . @@ -187,7 +192,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_VIEW IMPLEMENTATION. +CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. METHOD apply_order_by. @@ -547,6 +552,18 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_VIEW IMPLEMENTATION. ENDMETHOD. + METHOD build_srcsystem_code. + + IF is_item-srcsystem IS NOT INITIAL AND is_item-srcsystem <> sy-sysid. + rv_srcsystem_html_code = zcl_abapgit_html=>icon( + iv_name = 'server-solid/grey' + iv_hint = |Original system: { is_item-srcsystem }| + iv_class = 'cursor-pointer' ). + ENDIF. + + ENDMETHOD. + + METHOD build_tag_dropdown. CREATE OBJECT ro_tag_dropdown. @@ -1003,7 +1020,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_VIEW IMPLEMENTATION. ELSE. lv_link = build_obj_jump_link( is_item ). ri_html->add( |{ is_item-obj_type }| ). - ri_html->add( |{ lv_link } { build_inactive_object_code( is_item ) }| ). + ri_html->add( |{ lv_link } { build_inactive_object_code( is_item ) + } { build_srcsystem_code( is_item ) }| ). ENDIF. ENDIF. diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index be7d11232..e11bb3ee6 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -73,9 +73,10 @@ INTERFACE zif_abapgit_definitions END OF ty_comment . TYPES: BEGIN OF ty_item_signature, - obj_type TYPE tadir-object, - obj_name TYPE tadir-obj_name, - devclass TYPE devclass, + obj_type TYPE tadir-object, + obj_name TYPE tadir-obj_name, + devclass TYPE devclass, + srcsystem TYPE tadir-srcsystem, END OF ty_item_signature . TYPES: BEGIN OF ty_item. @@ -176,29 +177,31 @@ INTERFACE zif_abapgit_definitions WITH NON-UNIQUE SORTED KEY type COMPONENTS type sha1 . TYPES: BEGIN OF ty_tadir, - pgmid TYPE tadir-pgmid, - object TYPE tadir-object, - obj_name TYPE tadir-obj_name, - devclass TYPE tadir-devclass, - korrnum TYPE tadir-korrnum, " todo, I think this field can be removed after #2464 -Hvam - delflag TYPE tadir-delflag, - genflag TYPE tadir-genflag, - path TYPE string, + pgmid TYPE tadir-pgmid, + object TYPE tadir-object, + obj_name TYPE tadir-obj_name, + devclass TYPE tadir-devclass, + korrnum TYPE tadir-korrnum, " used by ZCL_ABAPGIT_DEPENDENCIES->RESOLVE + delflag TYPE tadir-delflag, + genflag TYPE tadir-genflag, + path TYPE string, + srcsystem TYPE tadir-srcsystem, END OF ty_tadir . TYPES: ty_tadir_tt TYPE STANDARD TABLE OF ty_tadir WITH DEFAULT KEY . TYPES: BEGIN OF ty_result, - obj_type TYPE tadir-object, - obj_name TYPE tadir-obj_name, - inactive TYPE abap_bool, - path TYPE string, - filename TYPE string, - package TYPE devclass, - match TYPE abap_bool, - lstate TYPE ty_item_state, - rstate TYPE ty_item_state, - packmove TYPE abap_bool, + obj_type TYPE tadir-object, + obj_name TYPE tadir-obj_name, + inactive TYPE abap_bool, + path TYPE string, + filename TYPE string, + package TYPE devclass, + match TYPE abap_bool, + lstate TYPE ty_item_state, + rstate TYPE ty_item_state, + packmove TYPE abap_bool, + srcsystem TYPE tadir-srcsystem, END OF ty_result . TYPES: ty_results_tt TYPE STANDARD TABLE OF ty_result WITH DEFAULT KEY . @@ -316,6 +319,7 @@ INTERFACE zif_abapgit_definitions changed_by TYPE syuname, transport TYPE trkorr, packmove TYPE abap_bool, + srcsystem TYPE tadir-srcsystem, END OF ty_repo_item . TYPES: ty_repo_item_tt TYPE STANDARD TABLE OF ty_repo_item WITH DEFAULT KEY .