From 21e408044ac1517c10ca91243eba963e08cd4600 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 26 Aug 2017 07:38:05 +0000 Subject: [PATCH 01/12] reset local shall remove superlfuous files --- src/zabapgit_services_git.prog.abap | 1 + 1 file changed, 1 insertion(+) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 29eb0ded3..a12ae5cef 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -71,6 +71,7 @@ CLASS lcl_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE lcx_cancel. ENDIF. + lo_repo->delete( ). lo_repo->deserialize( ). ENDMETHOD. From 71ca57f6ac231f6997b9e70801dc027b9338bd41 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 26 Aug 2017 08:31:22 +0000 Subject: [PATCH 02/12] first try to delete superflous files --- src/zabapgit_services_git.prog.abap | 45 +++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index a12ae5cef..be12babcf 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -47,8 +47,10 @@ CLASS lcl_services_git IMPLEMENTATION. METHOD reset. - DATA: lo_repo TYPE REF TO lcl_repo_online, - lv_answer TYPE c LENGTH 1. + DATA: lo_repo TYPE REF TO lcl_repo_online, + lv_answer TYPE c LENGTH 1, + lt_tadir TYPE lif_defs=>ty_tadir_tt, + lt_tadir_to_delete LIKE lt_tadir. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -71,7 +73,44 @@ CLASS lcl_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE lcx_cancel. ENDIF. - lo_repo->delete( ). + " delete local files that are not in remote... + DATA(lt_files_local) = lo_repo->get_files_local( ). + DATA(lt_files_remote) = lo_repo->get_files_remote( ). + + DATA(package) = lo_repo->get_package( ). + lt_tadir = lcl_tadir=>read( package ). + + LOOP AT lt_files_local ASSIGNING FIELD-SYMBOL(). + + IF NOT line_exists( lt_files_remote[ path = -file-path + filename = -file-filename ] ). + + IF sy-subrc = 0. + + READ TABLE lt_tadir ASSIGNING FIELD-SYMBOL() + WITH KEY object = -item-obj_type + obj_name = -item-obj_name + devclass = -item-devclass. + + ASSERT sy-subrc = 0. + + INSERT INTO TABLE lt_tadir_to_delete. + + ENDIF. + + ENDIF. + + ENDLOOP. + + + IF lines( lt_tadir_to_delete ) > 0. + + SORT lt_tadir_to_delete. + DELETE ADJACENT DUPLICATES FROM lt_tadir_to_delete. + lcl_objects=>delete( lt_tadir_to_delete ). + + ENDIF. + lo_repo->deserialize( ). ENDMETHOD. From 1de786ef7dbc2084c1fe64cdce1544af015bf4f5 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 26 Aug 2017 09:24:01 +0000 Subject: [PATCH 03/12] refactoring --- src/zabapgit_services_git.prog.abap | 60 ++++++++++++++--------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index be12babcf..237106989 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -47,10 +47,18 @@ CLASS lcl_services_git IMPLEMENTATION. METHOD reset. - DATA: lo_repo TYPE REF TO lcl_repo_online, - lv_answer TYPE c LENGTH 1, - lt_tadir TYPE lif_defs=>ty_tadir_tt, - lt_tadir_to_delete LIKE lt_tadir. + DATA: lo_repo TYPE REF TO lcl_repo_online, + lv_answer TYPE c LENGTH 1, + lt_tadir TYPE lif_defs=>ty_tadir_tt, + lt_tadir_to_delete LIKE lt_tadir, + lt_tadir_to_delete_unique TYPE HASHED TABLE OF lif_defs=>ty_tadir + WITH UNIQUE KEY pgmid object obj_name, + lt_local TYPE lif_defs=>ty_files_item_tt, + lt_remote TYPE lif_defs=>ty_files_tt, + lt_status TYPE lif_defs=>ty_results_tt, + lt_package TYPE lcl_persistence_repo=>ty_repo-package. + FIELD-SYMBOLS: TYPE lif_defs=>ty_result, + TYPE lif_defs=>ty_tadir. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -73,40 +81,32 @@ CLASS lcl_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE lcx_cancel. ENDIF. - " delete local files that are not in remote... - DATA(lt_files_local) = lo_repo->get_files_local( ). - DATA(lt_files_remote) = lo_repo->get_files_remote( ). + " delete files which are added locally but are not in remote repo + lt_local = lo_repo->get_files_local( ). + lt_remote = lo_repo->get_files_remote( ). + lt_status = lo_repo->status( ). - DATA(package) = lo_repo->get_package( ). - lt_tadir = lcl_tadir=>read( package ). + lt_package = lo_repo->get_package( ). + lt_tadir = lcl_tadir=>read( lt_package ). - LOOP AT lt_files_local ASSIGNING FIELD-SYMBOL(). + LOOP AT lt_status ASSIGNING + WHERE lstate = lif_defs=>gc_state-added. - IF NOT line_exists( lt_files_remote[ path = -file-path - filename = -file-filename ] ). + READ TABLE lt_tadir ASSIGNING + WITH KEY pgmid = 'R3TR' + object = -obj_type + obj_name = -obj_name + devclass = -package + BINARY SEARCH. + ASSERT sy-subrc = 0. - IF sy-subrc = 0. - - READ TABLE lt_tadir ASSIGNING FIELD-SYMBOL() - WITH KEY object = -item-obj_type - obj_name = -item-obj_name - devclass = -item-devclass. - - ASSERT sy-subrc = 0. - - INSERT INTO TABLE lt_tadir_to_delete. - - ENDIF. - - ENDIF. + INSERT INTO TABLE lt_tadir_to_delete_unique. ENDLOOP. + IF lines( lt_tadir_to_delete_unique ) > 0. - IF lines( lt_tadir_to_delete ) > 0. - - SORT lt_tadir_to_delete. - DELETE ADJACENT DUPLICATES FROM lt_tadir_to_delete. + lt_tadir_to_delete = lt_tadir_to_delete_unique. lcl_objects=>delete( lt_tadir_to_delete ). ENDIF. From c0287754f9ae14f4a5f007cf341390298a4714dc Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 26 Aug 2017 09:44:45 +0000 Subject: [PATCH 04/12] Refactoring --- src/zabapgit_services_git.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 237106989..46c10cf8b 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -57,10 +57,10 @@ CLASS lcl_services_git IMPLEMENTATION. lt_remote TYPE lif_defs=>ty_files_tt, lt_status TYPE lif_defs=>ty_results_tt, lt_package TYPE lcl_persistence_repo=>ty_repo-package. + FIELD-SYMBOLS: TYPE lif_defs=>ty_result, TYPE lif_defs=>ty_tadir. - lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). IF lo_repo->is_write_protected( ) = abap_true. From b6e8297d74e971b57fe1f89d35ef368f35da40b4 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 17:21:34 +0000 Subject: [PATCH 05/12] extract method delete_spare_local_objects extract method delete_spare_local_objects to class lcl_repo_online --- src/zabapgit_repo.prog.abap | 19 ++++++----- src/zabapgit_repo_impl.prog.abap | 46 +++++++++++++++++++++++++ src/zabapgit_services_git.prog.abap | 53 +++++++---------------------- 3 files changed, 70 insertions(+), 48 deletions(-) diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 131144ca6..c0fa219a8 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -42,21 +42,21 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv. RETURNING VALUE(ro_dot_abapgit) TYPE REF TO lcl_dot_abapgit, set_dot_abapgit IMPORTING io_dot_abapgit TYPE REF TO lcl_dot_abapgit - RAISING lcx_exception, + RAISING lcx_exception, deserialize RAISING lcx_exception, refresh IMPORTING iv_drop_cache TYPE abap_bool DEFAULT abap_false - RAISING lcx_exception, + RAISING lcx_exception, refresh_local, " For testing purposes, maybe removed later update_local_checksums IMPORTING it_files TYPE lif_defs=>ty_file_signatures_tt RAISING lcx_exception, rebuild_local_checksums - RAISING lcx_exception, + RAISING lcx_exception, find_remote_dot_abapgit RETURNING VALUE(ro_dot) TYPE REF TO lcl_dot_abapgit - RAISING lcx_exception, + RAISING lcx_exception, is_offline RETURNING VALUE(rv_offline) TYPE abap_bool RAISING lcx_exception. @@ -108,7 +108,7 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. IMPORTING iv_branch_name TYPE lcl_persistence_repo=>ty_repo-branch_name RAISING lcx_exception, set_new_remote - IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url iv_branch_name TYPE lcl_persistence_repo=>ty_repo-branch_name RAISING lcx_exception, get_sha1_local @@ -130,7 +130,10 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. push IMPORTING is_comment TYPE lif_defs=>ty_comment io_stage TYPE REF TO lcl_stage - RAISING lcx_exception. + RAISING lcx_exception, + delete_spare_local_objects + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + RAISING lcx_exception lcx_cancel. PRIVATE SECTION. DATA: @@ -149,8 +152,8 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. actualize_head_branch RAISING lcx_exception, delete_initial_online_repo - importing iv_commit type flag - RAISING lcx_exception. + IMPORTING iv_commit TYPE flag + RAISING lcx_exception. ENDCLASS. "lcl_repo_online DEFINITION diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index a639baafd..175f8a4fc 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -321,6 +321,52 @@ CLASS lcl_repo_online IMPLEMENTATION. ENDMETHOD. " delete_initial_online_repo + METHOD delete_spare_local_objects. + + DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt, + lt_tadir_to_delete LIKE lt_tadir, + lt_tadir_to_delete_unique TYPE HASHED TABLE OF lif_defs=>ty_tadir + WITH UNIQUE KEY pgmid object obj_name, + lt_local TYPE lif_defs=>ty_files_item_tt, + lt_remote TYPE lif_defs=>ty_files_tt, + lt_status TYPE lif_defs=>ty_results_tt, + lt_package TYPE lcl_persistence_repo=>ty_repo-package. + + FIELD-SYMBOLS: TYPE lif_defs=>ty_result, + TYPE lif_defs=>ty_tadir. + + " delete objects which are added locally but are not in remote repo + lt_local = me->get_files_local( ). + lt_remote = me->get_files_remote( ). + lt_status = me->status( ). + + lt_package = me->get_package( ). + lt_tadir = lcl_tadir=>read( lt_package ). + + LOOP AT lt_status ASSIGNING + WHERE lstate = lif_defs=>gc_state-added. + + READ TABLE lt_tadir ASSIGNING + WITH KEY pgmid = 'R3TR' + object = -obj_type + obj_name = -obj_name + devclass = -package + BINARY SEARCH. + ASSERT sy-subrc = 0. + + INSERT INTO TABLE lt_tadir_to_delete_unique. + + ENDLOOP. + + IF lines( lt_tadir_to_delete_unique ) > 0. + + lt_tadir_to_delete = lt_tadir_to_delete_unique. + lcl_objects=>delete( lt_tadir_to_delete ). + + ENDIF. + + ENDMETHOD. + ENDCLASS. "lcl_repo_online IMPLEMENTATION *----------------------------------------------------------------------* diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 46c10cf8b..95647810e 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -47,19 +47,8 @@ CLASS lcl_services_git IMPLEMENTATION. METHOD reset. - DATA: lo_repo TYPE REF TO lcl_repo_online, - lv_answer TYPE c LENGTH 1, - lt_tadir TYPE lif_defs=>ty_tadir_tt, - lt_tadir_to_delete LIKE lt_tadir, - lt_tadir_to_delete_unique TYPE HASHED TABLE OF lif_defs=>ty_tadir - WITH UNIQUE KEY pgmid object obj_name, - lt_local TYPE lif_defs=>ty_files_item_tt, - lt_remote TYPE lif_defs=>ty_files_tt, - lt_status TYPE lif_defs=>ty_results_tt, - lt_package TYPE lcl_persistence_repo=>ty_repo-package. - - FIELD-SYMBOLS: TYPE lif_defs=>ty_result, - TYPE lif_defs=>ty_tadir. + DATA: lo_repo TYPE REF TO lcl_repo_online, + lv_answer TYPE c LENGTH 1. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -81,34 +70,18 @@ CLASS lcl_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE lcx_cancel. ENDIF. - " delete files which are added locally but are not in remote repo - lt_local = lo_repo->get_files_local( ). - lt_remote = lo_repo->get_files_remote( ). - lt_status = lo_repo->status( ). - - lt_package = lo_repo->get_package( ). - lt_tadir = lcl_tadir=>read( lt_package ). - - LOOP AT lt_status ASSIGNING - WHERE lstate = lif_defs=>gc_state-added. - - READ TABLE lt_tadir ASSIGNING - WITH KEY pgmid = 'R3TR' - object = -obj_type - obj_name = -obj_name - devclass = -package - BINARY SEARCH. - ASSERT sy-subrc = 0. - - INSERT INTO TABLE lt_tadir_to_delete_unique. - - ENDLOOP. - - IF lines( lt_tadir_to_delete_unique ) > 0. - - lt_tadir_to_delete = lt_tadir_to_delete_unique. - lcl_objects=>delete( lt_tadir_to_delete ). + lv_answer = lcl_popups=>popup_to_confirm( + titlebar = 'Warning' + text_question = 'Delete superfluous local objects?' + text_button_1 = 'Ok' + icon_button_1 = 'ICON_OKAY' + text_button_2 = 'Cancel' + icon_button_2 = 'ICON_CANCEL' + default_button = '2' + display_cancel_button = abap_false ). "#EC NOTEXT + IF lv_answer = '1'. + lo_repo->delete_spare_local_objects( iv_key ). ENDIF. lo_repo->deserialize( ). From c76ff5674b102765a02000fa41d5e6e8aa38ed11 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 17:23:09 +0000 Subject: [PATCH 06/12] change 'Cancel' to 'No' --- src/zabapgit_services_git.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 95647810e..1d8b01085 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -75,7 +75,7 @@ CLASS lcl_services_git IMPLEMENTATION. text_question = 'Delete superfluous local objects?' text_button_1 = 'Ok' icon_button_1 = 'ICON_OKAY' - text_button_2 = 'Cancel' + text_button_2 = 'No' icon_button_2 = 'ICON_CANCEL' default_button = '2' display_cancel_button = abap_false ). "#EC NOTEXT From 8a695257b123d3d5f20cddc08cb0c85be312a6e4 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 17:29:04 +0000 Subject: [PATCH 07/12] rename method --- src/zabapgit_repo.prog.abap | 3 +-- src/zabapgit_repo_impl.prog.abap | 2 +- src/zabapgit_services_git.prog.abap | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index c0fa219a8..8ba4c541f 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -131,8 +131,7 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. IMPORTING is_comment TYPE lif_defs=>ty_comment io_stage TYPE REF TO lcl_stage RAISING lcx_exception, - delete_spare_local_objects - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + delete_unneccessary_local_objs RAISING lcx_exception lcx_cancel. PRIVATE SECTION. diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 175f8a4fc..67d385f71 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -321,7 +321,7 @@ CLASS lcl_repo_online IMPLEMENTATION. ENDMETHOD. " delete_initial_online_repo - METHOD delete_spare_local_objects. + METHOD delete_unneccessary_local_objs. DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt, lt_tadir_to_delete LIKE lt_tadir, diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 1d8b01085..a51544218 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -81,7 +81,7 @@ CLASS lcl_services_git IMPLEMENTATION. display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '1'. - lo_repo->delete_spare_local_objects( iv_key ). + lo_repo->delete_unneccessary_local_objs( ). ENDIF. lo_repo->deserialize( ). From 63eab6d6fa1de06c71911694920662d540e270be Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 17:30:58 +0000 Subject: [PATCH 08/12] beautify --- src/zabapgit_repo_impl.prog.abap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 67d385f71..c02963191 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -365,7 +365,8 @@ CLASS lcl_repo_online IMPLEMENTATION. ENDIF. - ENDMETHOD. + ENDMETHOD. " delete_unneccessary_local_objs. + ENDCLASS. "lcl_repo_online IMPLEMENTATION From fea262fb323497ec65fded9a515619baba0c97c7 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 17:35:00 +0000 Subject: [PATCH 09/12] fix typo --- src/zabapgit_repo.prog.abap | 2 +- src/zabapgit_repo_impl.prog.abap | 2 +- src/zabapgit_services_git.prog.abap | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 8ba4c541f..db609db03 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -131,7 +131,7 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. IMPORTING is_comment TYPE lif_defs=>ty_comment io_stage TYPE REF TO lcl_stage RAISING lcx_exception, - delete_unneccessary_local_objs + delete_unnecessary_local_objs RAISING lcx_exception lcx_cancel. PRIVATE SECTION. diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index c02963191..904586bb1 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -321,7 +321,7 @@ CLASS lcl_repo_online IMPLEMENTATION. ENDMETHOD. " delete_initial_online_repo - METHOD delete_unneccessary_local_objs. + METHOD delete_unnecessary_local_objs. DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt, lt_tadir_to_delete LIKE lt_tadir, diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index a51544218..5e55f0d43 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -72,7 +72,7 @@ CLASS lcl_services_git IMPLEMENTATION. lv_answer = lcl_popups=>popup_to_confirm( titlebar = 'Warning' - text_question = 'Delete superfluous local objects?' + text_question = 'Delete unnecessary local objects?' text_button_1 = 'Ok' icon_button_1 = 'ICON_OKAY' text_button_2 = 'No' @@ -81,7 +81,7 @@ CLASS lcl_services_git IMPLEMENTATION. display_cancel_button = abap_false ). "#EC NOTEXT IF lv_answer = '1'. - lo_repo->delete_unneccessary_local_objs( ). + lo_repo->delete_unnecessary_local_objs( ). ENDIF. lo_repo->deserialize( ). From f6a4e1a4480c523c05866e0d94deb7bbf6beecbc Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 18:34:32 +0000 Subject: [PATCH 10/12] Add counter for deleted objects Add counter for deleted objects and show popup only if there are any --- src/zabapgit_repo.prog.abap | 3 +++ src/zabapgit_repo_impl.prog.abap | 42 +++++++++++++++++------------ src/zabapgit_services_git.prog.abap | 33 ++++++++++++++--------- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index db609db03..1c0b7b2d8 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -131,6 +131,9 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. IMPORTING is_comment TYPE lif_defs=>ty_comment io_stage TYPE REF TO lcl_stage RAISING lcx_exception, + get_unnecessary_local_objs + RETURNING VALUE(rt_unnecessary_local_objects) TYPE LIF_DEFS=>TY_TADIR_TT + RAISING lcx_exception, delete_unnecessary_local_objs RAISING lcx_exception lcx_cancel. diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 904586bb1..8d5147f8a 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -323,14 +323,28 @@ CLASS lcl_repo_online IMPLEMENTATION. METHOD delete_unnecessary_local_objs. - DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt, - lt_tadir_to_delete LIKE lt_tadir, - lt_tadir_to_delete_unique TYPE HASHED TABLE OF lif_defs=>ty_tadir - WITH UNIQUE KEY pgmid object obj_name, - lt_local TYPE lif_defs=>ty_files_item_tt, - lt_remote TYPE lif_defs=>ty_files_tt, - lt_status TYPE lif_defs=>ty_results_tt, - lt_package TYPE lcl_persistence_repo=>ty_repo-package. + DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt. + + lt_tadir = get_unnecessary_local_objs( ). + + IF lines( lt_tadir ) > 0. + + lcl_objects=>delete( lt_tadir ). + + ENDIF. + + ENDMETHOD. " delete_unneccessary_local_objs. + + + METHOD get_unnecessary_local_objs. + + DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt, + lt_tadir_unique TYPE HASHED TABLE OF lif_defs=>ty_tadir + WITH UNIQUE KEY pgmid object obj_name, + lt_local TYPE lif_defs=>ty_files_item_tt, + lt_remote TYPE lif_defs=>ty_files_tt, + lt_status TYPE lif_defs=>ty_results_tt, + lt_package TYPE lcl_persistence_repo=>ty_repo-package. FIELD-SYMBOLS: TYPE lif_defs=>ty_result, TYPE lif_defs=>ty_tadir. @@ -354,19 +368,13 @@ CLASS lcl_repo_online IMPLEMENTATION. BINARY SEARCH. ASSERT sy-subrc = 0. - INSERT INTO TABLE lt_tadir_to_delete_unique. + INSERT INTO TABLE lt_tadir_unique. ENDLOOP. - IF lines( lt_tadir_to_delete_unique ) > 0. - - lt_tadir_to_delete = lt_tadir_to_delete_unique. - lcl_objects=>delete( lt_tadir_to_delete ). - - ENDIF. - - ENDMETHOD. " delete_unneccessary_local_objs. + rt_unnecessary_local_objects = lt_tadir_unique. + ENDMETHOD. ENDCLASS. "lcl_repo_online IMPLEMENTATION diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 5e55f0d43..66b307f0c 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -47,8 +47,9 @@ CLASS lcl_services_git IMPLEMENTATION. METHOD reset. - DATA: lo_repo TYPE REF TO lcl_repo_online, - lv_answer TYPE c LENGTH 1. + DATA: lo_repo TYPE REF TO lcl_repo_online, + lv_answer TYPE c LENGTH 1, + lt_unnecessary_local_objs TYPE lif_defs=>ty_tadir_tt. lo_repo ?= lcl_app=>repo_srv( )->get( iv_key ). @@ -70,18 +71,24 @@ CLASS lcl_services_git IMPLEMENTATION. RAISE EXCEPTION TYPE lcx_cancel. ENDIF. - lv_answer = lcl_popups=>popup_to_confirm( - titlebar = 'Warning' - text_question = 'Delete unnecessary local objects?' - text_button_1 = 'Ok' - icon_button_1 = 'ICON_OKAY' - text_button_2 = 'No' - icon_button_2 = 'ICON_CANCEL' - default_button = '2' - display_cancel_button = abap_false ). "#EC NOTEXT + lt_unnecessary_local_objs = lo_repo->get_unnecessary_local_objs( ). + + IF lines( lt_unnecessary_local_objs ) > 0. + + lv_answer = lcl_popups=>popup_to_confirm( + titlebar = 'Warning' + text_question = |Delete ({ lines( lt_unnecessary_local_objs ) }) unnecessary local objects?| + text_button_1 = 'Yes' + icon_button_1 = 'ICON_OKAY' + text_button_2 = 'No' + icon_button_2 = 'ICON_CANCEL' + default_button = '2' + display_cancel_button = abap_false ). "#EC NOTEXT + + IF lv_answer = '1'. + lo_repo->delete_unnecessary_local_objs( ). + ENDIF. - IF lv_answer = '1'. - lo_repo->delete_unnecessary_local_objs( ). ENDIF. lo_repo->deserialize( ). From 02f913a9c3c0b3e2ed09aa227b4abeef31027aa2 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 18:37:46 +0000 Subject: [PATCH 11/12] change popup text --- src/zabapgit_services_git.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 66b307f0c..25b0f1269 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -77,7 +77,7 @@ CLASS lcl_services_git IMPLEMENTATION. lv_answer = lcl_popups=>popup_to_confirm( titlebar = 'Warning' - text_question = |Delete ({ lines( lt_unnecessary_local_objs ) }) unnecessary local objects?| + text_question = |Delete { lines( lt_unnecessary_local_objs ) } unnecessary local objects?| text_button_1 = 'Yes' icon_button_1 = 'ICON_OKAY' text_button_2 = 'No' From c08ec05fbff37f1e619d168b7b20e8f62d128fc0 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 28 Aug 2017 18:47:02 +0000 Subject: [PATCH 12/12] change popup title --- src/zabapgit_services_git.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 25b0f1269..a37c2f3db 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -76,7 +76,7 @@ CLASS lcl_services_git IMPLEMENTATION. IF lines( lt_unnecessary_local_objs ) > 0. lv_answer = lcl_popups=>popup_to_confirm( - titlebar = 'Warning' + titlebar = 'Question' text_question = |Delete { lines( lt_unnecessary_local_objs ) } unnecessary local objects?| text_button_1 = 'Yes' icon_button_1 = 'ICON_OKAY'