mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Fix lost remote on favorite refresh (#5277)
* Fix reinstantiation on fav_refresh * rename list_favorites to list_by_keys * linter fix
This commit is contained in:
parent
0db2c9c085
commit
cb90be9ce7
|
@ -43,7 +43,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_PERSISTENCE_REPO IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -131,6 +131,16 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_repo_from_content.
|
||||
MOVE-CORRESPONDING from_xml( is_content-data_str ) TO rs_result.
|
||||
IF rs_result-local_settings-write_protected = abap_false AND
|
||||
zcl_abapgit_factory=>get_environment( )->is_repo_object_changes_allowed( ) = abap_false.
|
||||
rs_result-local_settings-write_protected = abap_true.
|
||||
ENDIF.
|
||||
rs_result-key = is_content-value.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD to_xml.
|
||||
|
||||
DATA: ls_xml TYPE zif_abapgit_persistence=>ty_repo_xml.
|
||||
|
@ -184,6 +194,22 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_repo~exists.
|
||||
|
||||
DATA lt_keys TYPE zif_abapgit_persistence=>ty_repo_keys.
|
||||
DATA lt_content TYPE zif_abapgit_persistence=>ty_contents.
|
||||
|
||||
APPEND iv_key TO lt_keys.
|
||||
|
||||
lt_content = mo_db->list_by_keys(
|
||||
it_keys = lt_keys
|
||||
iv_type = zcl_abapgit_persistence_db=>c_type_repo ).
|
||||
|
||||
rv_yes = boolc( lines( lt_content ) > 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_repo~list.
|
||||
|
||||
DATA: lt_content TYPE zif_abapgit_persistence=>ty_contents,
|
||||
|
@ -199,7 +225,8 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_persist_repo~list_favorites.
|
||||
|
||||
METHOD zif_abapgit_persist_repo~list_by_keys.
|
||||
DATA: lt_content TYPE zif_abapgit_persistence=>ty_contents,
|
||||
ls_content LIKE LINE OF lt_content,
|
||||
ls_repo LIKE LINE OF rt_repos.
|
||||
|
@ -215,7 +242,6 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
METHOD zif_abapgit_persist_repo~lock.
|
||||
|
||||
mo_db->lock( iv_mode = iv_mode
|
||||
|
@ -282,15 +308,4 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
|||
iv_data = lv_blob ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_repo_from_content.
|
||||
MOVE-CORRESPONDING from_xml( is_content-data_str ) TO rs_result.
|
||||
IF rs_result-local_settings-write_protected = abap_false AND
|
||||
zcl_abapgit_factory=>get_environment( )->is_repo_object_changes_allowed( ) = abap_false.
|
||||
rs_result-local_settings-write_protected = abap_true.
|
||||
ENDIF.
|
||||
rs_result-key = is_content-value.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -20,16 +20,23 @@ INTERFACE zif_abapgit_persist_repo
|
|||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS exists
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RETURNING
|
||||
VALUE(rv_yes) TYPE abap_bool.
|
||||
METHODS list
|
||||
RETURNING
|
||||
VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS list_favorites
|
||||
IMPORTING it_keys TYPE zif_abapgit_persistence=>ty_repo_keys
|
||||
RETURNING VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
||||
METHODS list_by_keys
|
||||
IMPORTING
|
||||
it_keys TYPE zif_abapgit_persistence=>ty_repo_keys
|
||||
RETURNING
|
||||
VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
zcx_abapgit_exception .
|
||||
METHODS lock
|
||||
IMPORTING
|
||||
!iv_mode TYPE enqmode
|
||||
|
|
|
@ -82,7 +82,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD add.
|
||||
|
@ -147,16 +147,6 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_repo_srv~list_favorites.
|
||||
|
||||
IF mv_init = abap_false OR mv_only_favorites = abap_false.
|
||||
refresh_favorites( ).
|
||||
ENDIF.
|
||||
|
||||
rt_list = mt_list.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD refresh_all.
|
||||
|
||||
|
@ -176,19 +166,41 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD refresh_favorites.
|
||||
|
||||
DATA: lt_list TYPE zif_abapgit_persistence=>ty_repos,
|
||||
lt_user_favorites TYPE zif_abapgit_persist_user=>ty_favorites.
|
||||
|
||||
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
|
||||
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
|
||||
DATA lv_repo_index TYPE i.
|
||||
DATA lo_repo_db TYPE REF TO zif_abapgit_persist_repo.
|
||||
|
||||
CLEAR mt_list.
|
||||
FIELD-SYMBOLS: <ls_repo_record> LIKE LINE OF lt_list.
|
||||
|
||||
lo_repo_db = zcl_abapgit_persist_factory=>get_repo( ).
|
||||
lt_user_favorites = zcl_abapgit_persistence_user=>get_instance( )->get_favorites( ).
|
||||
lt_list = zcl_abapgit_persist_factory=>get_repo( )->list_favorites( lt_user_favorites ).
|
||||
LOOP AT lt_list ASSIGNING <ls_list>.
|
||||
instantiate_and_add( <ls_list> ).
|
||||
lt_list = lo_repo_db->list_by_keys( lt_user_favorites ).
|
||||
|
||||
SORT lt_list BY package.
|
||||
|
||||
LOOP AT mt_list INTO lo_repo.
|
||||
lv_repo_index = sy-tabix.
|
||||
|
||||
READ TABLE lt_list TRANSPORTING NO FIELDS WITH KEY package = lo_repo->get_package( ).
|
||||
IF sy-subrc = 0.
|
||||
DELETE lt_list INDEX sy-tabix.
|
||||
CONTINUE. " Leave the repo be
|
||||
ELSEIF lo_repo_db->exists( lo_repo->get_key( ) ) = abap_false.
|
||||
" Not a fav, and also does not exist, probably uninstalled
|
||||
DELETE mt_list INDEX lv_repo_index.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
" Create remaining (new) favs
|
||||
LOOP AT lt_list ASSIGNING <ls_repo_record>.
|
||||
instantiate_and_add( <ls_repo_record> ).
|
||||
ENDLOOP.
|
||||
|
||||
mv_init = abap_true.
|
||||
|
@ -441,6 +453,30 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_repo_srv~list_favorites.
|
||||
|
||||
DATA lt_user_favorites TYPE zif_abapgit_persist_user=>ty_favorites.
|
||||
DATA lo_repo TYPE REF TO zcl_abapgit_repo.
|
||||
|
||||
lt_user_favorites = zcl_abapgit_persistence_user=>get_instance( )->get_favorites( ).
|
||||
SORT lt_user_favorites BY table_line.
|
||||
|
||||
IF mv_init = abap_false OR mv_only_favorites = abap_false.
|
||||
refresh_favorites( ).
|
||||
ENDIF.
|
||||
|
||||
LOOP AT mt_list INTO lo_repo.
|
||||
READ TABLE lt_user_favorites
|
||||
TRANSPORTING NO FIELDS
|
||||
WITH KEY table_line = lo_repo->get_key( ).
|
||||
IF sy-subrc = 0.
|
||||
APPEND lo_repo TO rt_list.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_repo_srv~new_offline.
|
||||
|
||||
DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo,
|
||||
|
@ -636,5 +672,4 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
Loading…
Reference in New Issue
Block a user