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 CLASS-METHODS check_objects_locked
IMPORTING IMPORTING
iv_language TYPE spras iv_language TYPE spras
it_results TYPE zif_abapgit_definitions=>ty_results_tt it_items TYPE zif_abapgit_definitions=>ty_items_tt
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
CLASS-METHODS create_object CLASS-METHODS create_object
@ -191,6 +191,16 @@ CLASS zcl_abapgit_objects DEFINITION
VALUE(ri_obj) TYPE REF TO zif_abapgit_object VALUE(ri_obj) TYPE REF TO zif_abapgit_object
RAISING RAISING
zcx_abapgit_exception . 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. ENDCLASS.
@ -252,20 +262,18 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
METHOD check_objects_locked. METHOD check_objects_locked.
DATA: li_obj TYPE REF TO zif_abapgit_object, 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.
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 ). iv_language = iv_language ).
IF li_obj->is_locked( ) = abap_true. IF li_obj->is_locked( ) = abap_true.
zcx_abapgit_exception=>raise( |Object { ls_item-obj_type } { ls_item-obj_name } | zcx_abapgit_exception=>raise( |Object { <ls_item>-obj_type } { <ls_item>-obj_name } |
&& |is locked. Deserialization not possible.| ). && |is locked. Action not possible.| ).
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
@ -376,7 +384,8 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
lo_progress TYPE REF TO zcl_abapgit_progress, 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. FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
@ -388,6 +397,11 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
EXPORTING EXPORTING
iv_total = lines( lt_tadir ). 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>. LOOP AT lt_tadir ASSIGNING <ls_tadir>.
lo_progress->show( iv_current = sy-tabix lo_progress->show( iv_current = sy-tabix
iv_text = |Delete { <ls_tadir>-obj_name }| ) ##NO_TEXT. 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_rest TYPE TABLE OF ty_deserialization,
lt_late TYPE TABLE OF ty_deserialization, lt_late TYPE TABLE OF ty_deserialization,
lo_progress TYPE REF TO zcl_abapgit_progress, 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, FIELD-SYMBOLS: <ls_result> TYPE zif_abapgit_definitions=>ty_result,
<ls_deser> LIKE LINE OF lt_late. <ls_deser> LIKE LINE OF lt_late.
@ -472,8 +487,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
EXPORTING EXPORTING
iv_total = lines( lt_results ). 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( ) 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>. LOOP AT lt_results ASSIGNING <ls_result>.
lo_progress->show( iv_current = sy-tabix lo_progress->show( iv_current = sy-tabix
@ -947,4 +964,38 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
ENDLOOP. ENDLOOP.
ENDMETHOD. 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. ENDCLASS.

View File

@ -403,7 +403,7 @@ CLASS ltcl_check_objects_locked DEFINITION FINAL FOR TESTING
PRIVATE SECTION. PRIVATE SECTION.
DATA: 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. mv_exception_text TYPE string.
METHODS: METHODS:
@ -453,7 +453,7 @@ CLASS ltcl_check_objects_locked IMPLEMENTATION.
TRY. TRY.
zcl_abapgit_objects=>check_objects_locked( iv_language = 'E' 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. CATCH zcx_abapgit_exception INTO lx_error.
mv_exception_text = lx_error->get_text( ). mv_exception_text = lx_error->get_text( ).
@ -465,7 +465,7 @@ CLASS ltcl_check_objects_locked IMPLEMENTATION.
METHOD then_exception_shd_be_raised. METHOD then_exception_shd_be_raised.
cl_abap_unit_assert=>assert_equals( 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 ). act = mv_exception_text ).
ENDMETHOD. ENDMETHOD.
@ -491,12 +491,12 @@ CLASS ltcl_check_objects_locked IMPLEMENTATION.
co_obj_type TYPE string VALUE 'DDLS'. co_obj_type TYPE string VALUE 'DDLS'.
DATA: 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_obj_serializer_map LIKE LINE OF zcl_abapgit_objects=>st_obj_serializer_map.
ls_result-obj_type = co_obj_type. ls_item-obj_type = co_obj_type.
ls_result-obj_name = iv_object_name. ls_item-obj_name = iv_object_name.
INSERT ls_result INTO TABLE mt_given_results. INSERT ls_item INTO TABLE mt_given_items.
ls_obj_serializer_map-item-obj_type = co_obj_type. ls_obj_serializer_map-item-obj_type = co_obj_type.
ls_obj_serializer_map-item-obj_name = iv_object_name. ls_obj_serializer_map-item-obj_name = iv_object_name.