Set transport request if needed during uninstall or reset local (#1596)

* delete checks: set transport request if needed

this ensures that the transport request is set when deleting objects.
E.g. uninstalling the repositoy or reset local.

* separate type for delete checks
This commit is contained in:
Christian Günter 2018-07-11 16:18:08 +02:00 committed by Lars Hvam
parent 6ced7c04bb
commit 4f9f47cd59
8 changed files with 114 additions and 63 deletions

View File

@ -228,7 +228,8 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
lv_answer TYPE c LENGTH 1, lv_answer TYPE c LENGTH 1,
lt_unnecessary_local_objs TYPE zif_abapgit_definitions=>ty_tadir_tt, lt_unnecessary_local_objs TYPE zif_abapgit_definitions=>ty_tadir_tt,
lt_selected LIKE lt_unnecessary_local_objs, lt_selected LIKE lt_unnecessary_local_objs,
lt_columns TYPE stringtab. lt_columns TYPE stringtab,
ls_checks TYPE zif_abapgit_definitions=>ty_delete_checks.
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
@ -268,7 +269,14 @@ CLASS zcl_abapgit_services_git IMPLEMENTATION.
et_list = lt_selected ). et_list = lt_selected ).
IF lines( lt_selected ) > 0. IF lines( lt_selected ) > 0.
zcl_abapgit_objects=>delete( lt_selected ). ls_checks = lo_repo->delete_checks( ).
IF ls_checks-transport-required = abap_true.
ls_checks-transport-transport = zcl_abapgit_ui_factory=>get_popups(
)->popup_transport_request( ls_checks-transport-type ).
ENDIF.
zcl_abapgit_objects=>delete( it_tadir = lt_selected
is_checks = ls_checks ).
* update repo cache * update repo cache
lo_repo->refresh( ). lo_repo->refresh( ).
ENDIF. ENDIF.

View File

@ -282,7 +282,8 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
lv_answer TYPE c LENGTH 1, lv_answer TYPE c LENGTH 1,
lo_repo TYPE REF TO zcl_abapgit_repo, lo_repo TYPE REF TO zcl_abapgit_repo,
lv_package TYPE devclass, lv_package TYPE devclass,
lv_question TYPE c LENGTH 100. lv_question TYPE c LENGTH 100,
ls_checks TYPE zif_abapgit_definitions=>ty_delete_checks.
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
@ -311,7 +312,14 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
ENDIF. ENDIF.
zcl_abapgit_repo_srv=>get_instance( )->purge( lo_repo ). ls_checks = lo_repo->delete_checks( ).
IF ls_checks-transport-required = abap_true.
ls_checks-transport-transport = zcl_abapgit_ui_factory=>get_popups(
)->popup_transport_request( ls_checks-transport-type ).
ENDIF.
zcl_abapgit_repo_srv=>get_instance( )->purge( io_repo = lo_repo
is_checks = ls_checks ).
COMMIT WORK. COMMIT WORK.

View File

@ -42,7 +42,8 @@ CLASS zcl_abapgit_objects DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS delete CLASS-METHODS delete
IMPORTING IMPORTING
!it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt
!is_checks TYPE zif_abapgit_definitions=>ty_delete_checks OPTIONAL
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
CLASS-METHODS jump CLASS-METHODS jump
@ -205,7 +206,7 @@ ENDCLASS.
CLASS zcl_abapgit_objects IMPLEMENTATION. CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
METHOD changed_by. METHOD changed_by.
@ -385,35 +386,50 @@ 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. lt_items TYPE zif_abapgit_definitions=>ty_items_tt,
lx_error TYPE REF TO zcx_abapgit_exception,
lv_text TYPE string.
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir. FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
lt_tadir = it_tadir. lt_tadir = it_tadir.
zcl_abapgit_dependencies=>resolve( CHANGING ct_tadir = lt_tadir ). IF is_checks-transport-required = abap_true.
zcl_abapgit_default_transport=>get_instance( )->set( is_checks-transport-transport ).
ENDIF.
CREATE OBJECT lo_progress TRY.
EXPORTING zcl_abapgit_dependencies=>resolve( CHANGING ct_tadir = lt_tadir ).
iv_total = lines( lt_tadir ).
lt_items = map_tadir_to_items( lt_tadir ). CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( lt_tadir ).
check_objects_locked( iv_language = zif_abapgit_definitions=>gc_english lt_items = map_tadir_to_items( lt_tadir ).
it_items = lt_items ).
LOOP AT lt_tadir ASSIGNING <ls_tadir>. check_objects_locked( iv_language = zif_abapgit_definitions=>gc_english
lo_progress->show( iv_current = sy-tabix it_items = lt_items ).
iv_text = |Delete { <ls_tadir>-obj_name }| ) ##NO_TEXT.
CLEAR ls_item. LOOP AT lt_tadir ASSIGNING <ls_tadir>.
ls_item-obj_type = <ls_tadir>-object. lo_progress->show( iv_current = sy-tabix
ls_item-obj_name = <ls_tadir>-obj_name. iv_text = |Delete { <ls_tadir>-obj_name }| ) ##NO_TEXT.
delete_obj( ls_item ).
CLEAR ls_item.
ls_item-obj_type = <ls_tadir>-object.
ls_item-obj_name = <ls_tadir>-obj_name.
delete_obj( ls_item ).
* make sure to save object deletions * make sure to save object deletions
COMMIT WORK. COMMIT WORK.
ENDLOOP. ENDLOOP.
CATCH zcx_abapgit_exception INTO lx_error.
zcl_abapgit_default_transport=>get_instance( )->reset( ).
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
zcl_abapgit_default_transport=>get_instance( )->reset( ).
ENDMETHOD. "delete ENDMETHOD. "delete
@ -446,7 +462,6 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
METHOD deserialize. METHOD deserialize.
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
lv_cancel TYPE abap_bool,
li_obj TYPE REF TO zif_abapgit_object, li_obj TYPE REF TO zif_abapgit_object,
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt, lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
lv_package TYPE devclass, lv_package TYPE devclass,
@ -718,6 +733,40 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
ENDMETHOD. "jump ENDMETHOD. "jump
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.
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 prioritize_deser. METHOD prioritize_deser.
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results. FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
@ -970,38 +1019,4 @@ 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

@ -84,7 +84,7 @@ CLASS ltcl_dangerous IMPLEMENTATION.
quit = if_aunit_constants=>no ). quit = if_aunit_constants=>no ).
ENDLOOP. ENDLOOP.
zcl_abapgit_objects=>delete( lt_tadir ). zcl_abapgit_objects=>delete( it_tadir = lt_tadir ).
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( c_package ). lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( c_package ).
LOOP AT lt_tadir ASSIGNING <ls_tadir>. LOOP AT lt_tadir ASSIGNING <ls_tadir>.
lv_msg = |Not deleted properly { <ls_tadir>-object } { <ls_tadir>-obj_name }|. lv_msg = |Not deleted properly { <ls_tadir>-object } { <ls_tadir>-obj_name }|.

View File

@ -12,6 +12,11 @@ CLASS zcl_abapgit_repo DEFINITION
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS delete_checks
RETURNING
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_delete_checks
RAISING
zcx_abapgit_exception .
METHODS constructor METHODS constructor
IMPORTING IMPORTING
!is_data TYPE zif_abapgit_persistence=>ty_repo . !is_data TYPE zif_abapgit_persistence=>ty_repo .
@ -124,7 +129,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. CLASS zcl_abapgit_repo IMPLEMENTATION.
METHOD constructor. METHOD constructor.
@ -205,6 +210,16 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD delete_checks.
DATA: li_package TYPE REF TO zif_abapgit_sap_package.
li_package = zcl_abapgit_factory=>get_sap_package( get_package( ) ).
rs_checks-transport-required = li_package->are_changes_recorded_in_tr_req( ).
ENDMETHOD.
METHOD find_remote_dot_abapgit. METHOD find_remote_dot_abapgit.
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF mt_remote. FIELD-SYMBOLS: <ls_remote> LIKE LINE OF mt_remote.

View File

@ -285,7 +285,8 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( io_repo->get_package( ) ). lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( io_repo->get_package( ) ).
zcl_abapgit_objects=>delete( lt_tadir ). zcl_abapgit_objects=>delete( it_tadir = lt_tadir
is_checks = is_checks ).
delete( io_repo ). delete( io_repo ).

View File

@ -128,7 +128,10 @@ INTERFACE zif_abapgit_definitions PUBLIC.
warning_package TYPE ty_overwrite_tt, warning_package TYPE ty_overwrite_tt,
requirements TYPE ty_requirements, requirements TYPE ty_requirements,
transport TYPE ty_transport, transport TYPE ty_transport,
END OF ty_deserialize_checks. END OF ty_deserialize_checks,
BEGIN OF ty_delete_checks,
transport TYPE ty_transport,
END OF ty_delete_checks.
TYPES: TYPES:
BEGIN OF ty_metadata, BEGIN OF ty_metadata,

View File

@ -46,7 +46,8 @@ INTERFACE zif_abapgit_repo_srv
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS purge METHODS purge
IMPORTING IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo !io_repo TYPE REF TO zcl_abapgit_repo
is_checks TYPE zif_abapgit_definitions=>ty_delete_checks
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS switch_repo_type METHODS switch_repo_type