Merge pull request #1522 from christianguenter2/issue_1521

Delete: check if any object is locked
This commit is contained in:
Lars Hvam 2018-06-21 14:28:01 +02:00 committed by GitHub
commit 016e66244d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 70 additions and 19 deletions

View File

@ -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: <ls_result> TYPE zif_abapgit_definitions=>ty_result.
DATA: li_obj TYPE REF TO zif_abapgit_object.
LOOP AT it_results ASSIGNING <ls_result>.
FIELD-SYMBOLS: <ls_item> LIKE LINE OF it_items.
MOVE-CORRESPONDING <ls_result> TO ls_item.
LOOP AT it_items ASSIGNING <ls_item>.
li_obj = create_object( is_item = ls_item
li_obj = create_object( is_item = <ls_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 { <ls_item>-obj_type } { <ls_item>-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: <ls_tadir> 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 <ls_tadir>.
lo_progress->show( iv_current = sy-tabix
iv_text = |Delete { <ls_tadir>-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: <ls_result> TYPE zif_abapgit_definitions=>ty_result,
<ls_deser> 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 <ls_result>.
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: <ls_tadir> TYPE zif_abapgit_definitions=>ty_tadir.
LOOP AT it_tadir ASSIGNING <ls_tadir>.
ls_item-devclass = <ls_tadir>-devclass.
ls_item-obj_type = <ls_tadir>-object.
ls_item-obj_name = <ls_tadir>-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: <ls_result> TYPE zif_abapgit_definitions=>ty_result.
LOOP AT it_results ASSIGNING <ls_result>.
ls_item-devclass = <ls_result>-package.
ls_item-obj_type = <ls_result>-obj_type.
ls_item-obj_name = <ls_result>-obj_name.
INSERT ls_item INTO TABLE rt_items.
ENDLOOP.
ENDMETHOD.
ENDCLASS.

View File

@ -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.