From dd63de8294d127574d6a100237f1db5a4ab8233c Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Sun, 12 Nov 2023 09:24:40 -0500 Subject: [PATCH] Consolidate offline and online repo view (#6638) Co-authored-by: Lars Hvam --- src/repo/zcl_abapgit_repo.clas.abap | 11 ++-- ...apgit_repo_checksums.clas.testclasses.abap | 2 + .../zcl_abapgit_repo_content_list.clas.abap | 64 ++++--------------- src/repo/zcl_abapgit_repo_offline.clas.abap | 8 --- src/repo/zcl_abapgit_repo_online.clas.abap | 7 -- src/repo/zif_abapgit_repo.intf.abap | 4 ++ ...bapgit_gui_chunk_lib.clas.testclasses.abap | 4 ++ 7 files changed, 29 insertions(+), 71 deletions(-) diff --git a/src/repo/zcl_abapgit_repo.clas.abap b/src/repo/zcl_abapgit_repo.clas.abap index e7f44ef70..006689eab 100644 --- a/src/repo/zcl_abapgit_repo.clas.abap +++ b/src/repo/zcl_abapgit_repo.clas.abap @@ -35,6 +35,8 @@ CLASS zcl_abapgit_repo DEFINITION FOR zif_abapgit_repo~refresh . ALIASES set_dot_abapgit FOR zif_abapgit_repo~set_dot_abapgit . + ALIASES has_remote_source + FOR zif_abapgit_repo~has_remote_source . METHODS bind_listener IMPORTING @@ -73,10 +75,6 @@ CLASS zcl_abapgit_repo DEFINITION VALUE(rt_objects) TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception . - METHODS has_remote_source - ABSTRACT - RETURNING - VALUE(rv_yes) TYPE abap_bool . METHODS refresh_local_object IMPORTING !iv_obj_type TYPE tadir-object @@ -439,6 +437,11 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. ENDMETHOD. + METHOD has_remote_source. + rv_yes = boolc( lines( mt_remote ) > 0 ). + ENDMETHOD. + + METHOD normalize_local_settings. cs_local_settings-labels = zcl_abapgit_repo_labels=>normalize( cs_local_settings-labels ). diff --git a/src/repo/zcl_abapgit_repo_checksums.clas.testclasses.abap b/src/repo/zcl_abapgit_repo_checksums.clas.testclasses.abap index 3400286b8..3de2bb4bc 100644 --- a/src/repo/zcl_abapgit_repo_checksums.clas.testclasses.abap +++ b/src/repo/zcl_abapgit_repo_checksums.clas.testclasses.abap @@ -247,6 +247,8 @@ CLASS lcl_repo_mock IMPLEMENTATION. ENDMETHOD. METHOD zif_abapgit_repo_srv~get_repo_from_url. ENDMETHOD. + METHOD zif_abapgit_repo~has_remote_source. + ENDMETHOD. METHOD zif_abapgit_repo~is_offline. ENDMETHOD. METHOD zif_abapgit_repo~deserialize. diff --git a/src/repo/zcl_abapgit_repo_content_list.clas.abap b/src/repo/zcl_abapgit_repo_content_list.clas.abap index 0bcc8d507..69835027b 100644 --- a/src/repo/zcl_abapgit_repo_content_list.clas.abap +++ b/src/repo/zcl_abapgit_repo_content_list.clas.abap @@ -31,11 +31,7 @@ CLASS zcl_abapgit_repo_content_list DEFINITION DATA: mo_repo TYPE REF TO zcl_abapgit_repo, mi_log TYPE REF TO zif_abapgit_log. - METHODS build_repo_items_local_only - RETURNING VALUE(rt_repo_items) TYPE zif_abapgit_definitions=>ty_repo_item_tt - RAISING zcx_abapgit_exception. - - METHODS build_repo_items_with_remote + METHODS build_repo_items RETURNING VALUE(rt_repo_items) TYPE zif_abapgit_definitions=>ty_repo_item_tt RAISING zcx_abapgit_exception. @@ -112,48 +108,7 @@ CLASS zcl_abapgit_repo_content_list IMPLEMENTATION. ENDMETHOD. - METHOD build_repo_items_local_only. - - DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt, - ls_item TYPE zif_abapgit_definitions=>ty_item. - - FIELD-SYMBOLS: LIKE LINE OF rt_repo_items, - LIKE LINE OF lt_tadir. - - - lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( - iv_package = mo_repo->get_package( ) - iv_ignore_subpackages = mo_repo->get_local_settings( )-ignore_subpackages - iv_only_local_objects = mo_repo->get_local_settings( )-only_local_objects - io_dot = mo_repo->get_dot_abapgit( ) ). - - LOOP AT lt_tadir ASSIGNING . - APPEND INITIAL LINE TO rt_repo_items ASSIGNING . - -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 - ENDIF. - - IF -obj_type IS NOT INITIAL. - MOVE-CORRESPONDING TO ls_item. - IF zcl_abapgit_objects=>exists( ls_item ) = abap_true. - -changed_by = zcl_abapgit_objects=>changed_by( ls_item ). - ENDIF. - CLEAR ls_item. - ENDIF. - ENDLOOP. - - ENDMETHOD. - - - METHOD build_repo_items_with_remote. + METHOD build_repo_items. DATA: lo_state TYPE REF TO zcl_abapgit_item_state, @@ -310,13 +265,18 @@ CLASS zcl_abapgit_repo_content_list IMPLEMENTATION. METHOD list. + FIELD-SYMBOLS LIKE LINE OF rt_repo_items. + mi_log->clear( ). - IF mo_repo->has_remote_source( ) = abap_true. - rt_repo_items = build_repo_items_with_remote( ). - check_repo_size( ). - ELSE. - rt_repo_items = build_repo_items_local_only( ). + rt_repo_items = build_repo_items( ). + check_repo_size( ). + + IF mo_repo->has_remote_source( ) = abap_false. + " If there's no remote source, ignore the item state + LOOP AT rt_repo_items ASSIGNING . + CLEAR: -changes, -lstate, -rstate. + ENDLOOP. ENDIF. IF iv_by_folders = abap_true. diff --git a/src/repo/zcl_abapgit_repo_offline.clas.abap b/src/repo/zcl_abapgit_repo_offline.clas.abap index 4fe39044f..c473d9012 100644 --- a/src/repo/zcl_abapgit_repo_offline.clas.abap +++ b/src/repo/zcl_abapgit_repo_offline.clas.abap @@ -5,9 +5,6 @@ CLASS zcl_abapgit_repo_offline DEFINITION CREATE PUBLIC . PUBLIC SECTION. - - METHODS has_remote_source - REDEFINITION . PROTECTED SECTION. METHODS reset_remote @@ -20,11 +17,6 @@ ENDCLASS. CLASS zcl_abapgit_repo_offline IMPLEMENTATION. - METHOD has_remote_source. - rv_yes = boolc( lines( mt_remote ) > 0 ). - ENDMETHOD. - - METHOD reset_remote. DATA lt_backup LIKE mt_remote. diff --git a/src/repo/zcl_abapgit_repo_online.clas.abap b/src/repo/zcl_abapgit_repo_online.clas.abap index 11081e98e..865d465e8 100644 --- a/src/repo/zcl_abapgit_repo_online.clas.abap +++ b/src/repo/zcl_abapgit_repo_online.clas.abap @@ -37,8 +37,6 @@ CLASS zcl_abapgit_repo_online DEFINITION REDEFINITION . METHODS zif_abapgit_repo~get_name REDEFINITION . - METHODS has_remote_source - REDEFINITION . PROTECTED SECTION. PRIVATE SECTION. @@ -148,11 +146,6 @@ CLASS zcl_abapgit_repo_online IMPLEMENTATION. ENDMETHOD. - METHOD has_remote_source. - rv_yes = abap_true. - ENDMETHOD. - - METHOD raise_error_if_branch_exists. DATA: diff --git a/src/repo/zif_abapgit_repo.intf.abap b/src/repo/zif_abapgit_repo.intf.abap index 8160e6cd2..d94693bae 100644 --- a/src/repo/zif_abapgit_repo.intf.abap +++ b/src/repo/zif_abapgit_repo.intf.abap @@ -78,4 +78,8 @@ INTERFACE zif_abapgit_repo RAISING zcx_abapgit_exception . + METHODS has_remote_source + RETURNING + VALUE(rv_yes) TYPE abap_bool . + ENDINTERFACE. diff --git a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.testclasses.abap b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.testclasses.abap index 8dc0b1353..1675ab151 100644 --- a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.testclasses.abap +++ b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.testclasses.abap @@ -222,6 +222,10 @@ CLASS ltd_repo IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_repo~has_remote_source. + + ENDMETHOD. + METHOD zif_abapgit_repo~is_offline. ENDMETHOD.