From 79a0a8fa855989228060da2bd3247c37c58d40e7 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Tue, 19 Jun 2018 13:32:25 +0000 Subject: [PATCH] Delete: checks if any object is locked --- src/zcl_abapgit_objects.clas.abap | 75 ++++++++++++++++--- src/zcl_abapgit_objects.clas.testclasses.abap | 14 ++-- 2 files changed, 70 insertions(+), 19 deletions(-) diff --git a/src/zcl_abapgit_objects.clas.abap b/src/zcl_abapgit_objects.clas.abap index f57d1e5ae..77eb10406 100644 --- a/src/zcl_abapgit_objects.clas.abap +++ b/src/zcl_abapgit_objects.clas.abap @@ -178,7 +178,7 @@ CLASS zcl_abapgit_objects DEFINITION CLASS-METHODS check_objects_locked IMPORTING iv_language TYPE spras - it_results TYPE zif_abapgit_definitions=>ty_results_tt + it_items TYPE zif_abapgit_definitions=>ty_items_tt RAISING zcx_abapgit_exception. CLASS-METHODS create_object @@ -191,6 +191,16 @@ CLASS zcl_abapgit_objects DEFINITION VALUE(ri_obj) TYPE REF TO zif_abapgit_object RAISING zcx_abapgit_exception . + CLASS-METHODS map_tadir_to_items + IMPORTING + it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt + RETURNING + VALUE(rt_items) TYPE zif_abapgit_definitions=>ty_items_tt. + CLASS-METHODS map_results_to_items + IMPORTING + it_results TYPE zif_abapgit_definitions=>ty_results_tt + RETURNING + VALUE(rt_items) TYPE zif_abapgit_definitions=>ty_items_tt. ENDCLASS. @@ -252,20 +262,18 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. METHOD check_objects_locked. - DATA: li_obj TYPE REF TO zif_abapgit_object, - ls_item TYPE zif_abapgit_definitions=>ty_item. - FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_result. + DATA: li_obj TYPE REF TO zif_abapgit_object. - LOOP AT it_results ASSIGNING . + FIELD-SYMBOLS: LIKE LINE OF it_items. - MOVE-CORRESPONDING TO ls_item. + LOOP AT it_items ASSIGNING . - li_obj = create_object( is_item = ls_item + li_obj = create_object( is_item = iv_language = iv_language ). IF li_obj->is_locked( ) = abap_true. - zcx_abapgit_exception=>raise( |Object { ls_item-obj_type } { ls_item-obj_name } | - && |is locked. Deserialization not possible.| ). + zcx_abapgit_exception=>raise( |Object { -obj_type } { -obj_name } | + && |is locked. Action not possible.| ). ENDIF. ENDLOOP. @@ -376,7 +384,8 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, lo_progress TYPE REF TO zcl_abapgit_progress, - lt_tadir LIKE it_tadir. + lt_tadir LIKE it_tadir, + lt_items TYPE zif_abapgit_definitions=>ty_items_tt. FIELD-SYMBOLS: LIKE LINE OF it_tadir. @@ -388,6 +397,11 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. EXPORTING iv_total = lines( lt_tadir ). + lt_items = map_tadir_to_items( lt_tadir ). + + check_objects_locked( iv_language = zif_abapgit_definitions=>gc_english + it_items = lt_items ). + LOOP AT lt_tadir ASSIGNING . lo_progress->show( iv_current = sy-tabix iv_text = |Delete { -obj_name }| ) ##NO_TEXT. @@ -443,7 +457,8 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. lt_rest TYPE TABLE OF ty_deserialization, lt_late TYPE TABLE OF ty_deserialization, lo_progress TYPE REF TO zcl_abapgit_progress, - lv_path TYPE string. + lv_path TYPE string, + lt_items TYPE zif_abapgit_definitions=>ty_items_tt. FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_result, LIKE LINE OF lt_late. @@ -472,8 +487,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. EXPORTING iv_total = lines( lt_results ). + lt_items = map_results_to_items( lt_results ). + check_objects_locked( iv_language = io_repo->get_dot_abapgit( )->get_master_language( ) - it_results = lt_results ). + it_items = lt_items ). LOOP AT lt_results ASSIGNING . lo_progress->show( iv_current = sy-tabix @@ -947,4 +964,38 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. ENDLOOP. ENDMETHOD. + + METHOD map_tadir_to_items. + + DATA: ls_item LIKE LINE OF rt_items. + FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_tadir. + + LOOP AT it_tadir ASSIGNING . + + ls_item-devclass = -devclass. + ls_item-obj_type = -object. + ls_item-obj_name = -obj_name. + INSERT ls_item INTO TABLE rt_items. + + ENDLOOP. + + ENDMETHOD. + + + METHOD map_results_to_items. + + DATA: ls_item LIKE LINE OF rt_items. + FIELD-SYMBOLS: TYPE zif_abapgit_definitions=>ty_result. + + LOOP AT it_results ASSIGNING . + + ls_item-devclass = -package. + ls_item-obj_type = -obj_type. + ls_item-obj_name = -obj_name. + INSERT ls_item INTO TABLE rt_items. + + ENDLOOP. + + ENDMETHOD. + ENDCLASS. diff --git a/src/zcl_abapgit_objects.clas.testclasses.abap b/src/zcl_abapgit_objects.clas.testclasses.abap index cd61a4a0b..f35a8facc 100644 --- a/src/zcl_abapgit_objects.clas.testclasses.abap +++ b/src/zcl_abapgit_objects.clas.testclasses.abap @@ -403,7 +403,7 @@ CLASS ltcl_check_objects_locked DEFINITION FINAL FOR TESTING PRIVATE SECTION. DATA: - mt_given_results TYPE zif_abapgit_definitions=>ty_results_tt, + mt_given_items TYPE zif_abapgit_definitions=>ty_items_tt, mv_exception_text TYPE string. METHODS: @@ -453,7 +453,7 @@ CLASS ltcl_check_objects_locked IMPLEMENTATION. TRY. zcl_abapgit_objects=>check_objects_locked( iv_language = 'E' - it_results = mt_given_results ). + it_items = mt_given_items ). CATCH zcx_abapgit_exception INTO lx_error. mv_exception_text = lx_error->get_text( ). @@ -465,7 +465,7 @@ CLASS ltcl_check_objects_locked IMPLEMENTATION. METHOD then_exception_shd_be_raised. cl_abap_unit_assert=>assert_equals( - exp = |Object DDLS Z_TEST_DDLS is locked. Deserialization not possible.| + exp = |Object DDLS Z_TEST_DDLS is locked. Action not possible.| act = mv_exception_text ). ENDMETHOD. @@ -491,12 +491,12 @@ CLASS ltcl_check_objects_locked IMPLEMENTATION. co_obj_type TYPE string VALUE 'DDLS'. DATA: - ls_result LIKE LINE OF mt_given_results, + ls_item LIKE LINE OF mt_given_items, ls_obj_serializer_map LIKE LINE OF zcl_abapgit_objects=>st_obj_serializer_map. - ls_result-obj_type = co_obj_type. - ls_result-obj_name = iv_object_name. - INSERT ls_result INTO TABLE mt_given_results. + ls_item-obj_type = co_obj_type. + ls_item-obj_name = iv_object_name. + INSERT ls_item INTO TABLE mt_given_items. ls_obj_serializer_map-item-obj_type = co_obj_type. ls_obj_serializer_map-item-obj_name = iv_object_name.