mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +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.
|
METHOD constructor.
|
||||||
|
@ -131,6 +131,16 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD to_xml.
|
||||||
|
|
||||||
DATA: ls_xml TYPE zif_abapgit_persistence=>ty_repo_xml.
|
DATA: ls_xml TYPE zif_abapgit_persistence=>ty_repo_xml.
|
||||||
|
@ -184,6 +194,22 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD zif_abapgit_persist_repo~list.
|
||||||
|
|
||||||
DATA: lt_content TYPE zif_abapgit_persistence=>ty_contents,
|
DATA: lt_content TYPE zif_abapgit_persistence=>ty_contents,
|
||||||
|
@ -199,7 +225,8 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
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,
|
DATA: lt_content TYPE zif_abapgit_persistence=>ty_contents,
|
||||||
ls_content LIKE LINE OF lt_content,
|
ls_content LIKE LINE OF lt_content,
|
||||||
ls_repo LIKE LINE OF rt_repos.
|
ls_repo LIKE LINE OF rt_repos.
|
||||||
|
@ -215,7 +242,6 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_persist_repo~lock.
|
METHOD zif_abapgit_persist_repo~lock.
|
||||||
|
|
||||||
mo_db->lock( iv_mode = iv_mode
|
mo_db->lock( iv_mode = iv_mode
|
||||||
|
@ -282,15 +308,4 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
|
||||||
iv_data = lv_blob ).
|
iv_data = lv_blob ).
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
|
@ -20,16 +20,23 @@ INTERFACE zif_abapgit_persist_repo
|
||||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
METHODS exists
|
||||||
|
IMPORTING
|
||||||
|
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_yes) TYPE abap_bool.
|
||||||
METHODS list
|
METHODS list
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS list_favorites
|
METHODS list_by_keys
|
||||||
IMPORTING it_keys TYPE zif_abapgit_persistence=>ty_repo_keys
|
IMPORTING
|
||||||
RETURNING VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
it_keys TYPE zif_abapgit_persistence=>ty_repo_keys
|
||||||
|
RETURNING
|
||||||
|
VALUE(rt_repos) TYPE zif_abapgit_persistence=>ty_repos
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
METHODS lock
|
METHODS lock
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_mode TYPE enqmode
|
!iv_mode TYPE enqmode
|
||||||
|
|
|
@ -82,7 +82,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD add.
|
METHOD add.
|
||||||
|
@ -147,16 +147,6 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
METHOD refresh_all.
|
||||||
|
|
||||||
|
@ -176,19 +166,41 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD refresh_favorites.
|
METHOD refresh_favorites.
|
||||||
|
|
||||||
DATA: lt_list TYPE zif_abapgit_persistence=>ty_repos,
|
DATA: lt_list TYPE zif_abapgit_persistence=>ty_repos,
|
||||||
lt_user_favorites TYPE zif_abapgit_persist_user=>ty_favorites.
|
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_user_favorites = zcl_abapgit_persistence_user=>get_instance( )->get_favorites( ).
|
||||||
lt_list = zcl_abapgit_persist_factory=>get_repo( )->list_favorites( lt_user_favorites ).
|
lt_list = lo_repo_db->list_by_keys( lt_user_favorites ).
|
||||||
LOOP AT lt_list ASSIGNING <ls_list>.
|
|
||||||
instantiate_and_add( <ls_list> ).
|
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.
|
ENDLOOP.
|
||||||
|
|
||||||
mv_init = abap_true.
|
mv_init = abap_true.
|
||||||
|
@ -441,6 +453,30 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD zif_abapgit_repo_srv~new_offline.
|
||||||
|
|
||||||
DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo,
|
DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo,
|
||||||
|
@ -636,5 +672,4 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user