mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
refactor overwrite object from other package popup to UI
This commit is contained in:
parent
7152b4281a
commit
3f1b29c01f
|
@ -84,6 +84,12 @@ CLASS zcl_abapgit_services_repo DEFINITION
|
|||
!ct_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS popup_package_overwrite
|
||||
CHANGING
|
||||
!ct_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -126,10 +132,18 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
|
||||
DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks.
|
||||
|
||||
* find troublesome objects
|
||||
ls_checks = io_repo->deserialize_checks( ).
|
||||
|
||||
popup_overwrite( CHANGING ct_overwrite = ls_checks-overwrite ).
|
||||
* and let the user decide what to do
|
||||
TRY.
|
||||
popup_overwrite( CHANGING ct_overwrite = ls_checks-overwrite ).
|
||||
popup_package_overwrite( CHANGING ct_overwrite = ls_checks-warning_package ).
|
||||
CATCH zcx_abapgit_cancel.
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
* and pass decisions to deserialize
|
||||
io_repo->deserialize( ls_checks ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -214,6 +228,45 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD popup_package_overwrite.
|
||||
|
||||
DATA: lv_question TYPE c LENGTH 200,
|
||||
lv_answer TYPE c.
|
||||
|
||||
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ct_overwrite.
|
||||
|
||||
|
||||
IF lines( ct_overwrite ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
LOOP AT ct_overwrite ASSIGNING <ls_overwrite>.
|
||||
CONCATENATE 'Overwrite object' <ls_overwrite>-obj_type <ls_overwrite>-obj_name
|
||||
'from package' <ls_overwrite>-devclass
|
||||
INTO lv_question SEPARATED BY space. "#EC NOTEXT
|
||||
|
||||
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
|
||||
titlebar = 'Warning'
|
||||
text_question = lv_question
|
||||
text_button_1 = 'Ok'
|
||||
icon_button_1 = 'ICON_DELETE'
|
||||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
|
||||
ENDIF.
|
||||
|
||||
* todo, let the user decide yes/no/cancel
|
||||
<ls_overwrite>-decision = 'Y'.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD purge.
|
||||
|
||||
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
|
||||
|
|
|
@ -120,6 +120,14 @@ CLASS zcl_abapgit_objects DEFINITION
|
|||
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS checks_adjust
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
|
||||
CHANGING
|
||||
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS warning_overwrite_find
|
||||
IMPORTING
|
||||
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
|
@ -127,12 +135,20 @@ CLASS zcl_abapgit_objects DEFINITION
|
|||
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS warning_package
|
||||
CLASS-METHODS warning_package_adjust
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
!iv_package TYPE devclass
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
!it_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
CHANGING
|
||||
!ct_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS warning_package_find
|
||||
IMPORTING
|
||||
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
RETURNING
|
||||
VALUE(rv_cancel) TYPE abap_bool
|
||||
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS update_package_tree
|
||||
|
@ -187,6 +203,22 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD checks_adjust.
|
||||
|
||||
warning_overwrite_adjust(
|
||||
EXPORTING it_overwrite = is_checks-overwrite
|
||||
CHANGING ct_results = ct_results ).
|
||||
|
||||
warning_package_adjust(
|
||||
EXPORTING
|
||||
io_repo = io_repo
|
||||
it_overwrite = is_checks-warning_package
|
||||
CHANGING
|
||||
ct_results = ct_results ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_duplicates.
|
||||
|
||||
DATA: lt_files TYPE zif_abapgit_definitions=>ty_files_tt.
|
||||
|
@ -395,36 +427,30 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
|
||||
lt_results = files_to_deserialize( io_repo ).
|
||||
|
||||
warning_overwrite_adjust(
|
||||
EXPORTING it_overwrite = is_checks-overwrite
|
||||
CHANGING ct_results = lt_results ).
|
||||
checks_adjust(
|
||||
EXPORTING
|
||||
io_repo = io_repo
|
||||
is_checks = is_checks
|
||||
CHANGING
|
||||
ct_results = lt_results ).
|
||||
|
||||
CREATE OBJECT lo_progress
|
||||
EXPORTING
|
||||
iv_total = lines( lt_results ).
|
||||
|
||||
LOOP AT lt_results ASSIGNING <ls_result> WHERE obj_type IS NOT INITIAL
|
||||
AND NOT ( lstate = zif_abapgit_definitions=>gc_state-added AND rstate IS INITIAL ).
|
||||
LOOP AT lt_results ASSIGNING <ls_result>.
|
||||
lo_progress->show( iv_current = sy-tabix
|
||||
iv_text = |Deserialize { <ls_result>-obj_name }| ) ##NO_TEXT.
|
||||
|
||||
CLEAR ls_item.
|
||||
ls_item-obj_type = <ls_result>-obj_type.
|
||||
ls_item-obj_name = <ls_result>-obj_name.
|
||||
* handle namespaces
|
||||
REPLACE ALL OCCURRENCES OF '#' IN ls_item-obj_name WITH '/'.
|
||||
|
||||
lv_package = zcl_abapgit_folder_logic=>path_to_package(
|
||||
iv_top = io_repo->get_package( )
|
||||
io_dot = io_repo->get_dot_abapgit( )
|
||||
iv_path = <ls_result>-path ).
|
||||
|
||||
lv_cancel = warning_package( is_item = ls_item
|
||||
iv_package = lv_package ).
|
||||
IF lv_cancel = abap_true.
|
||||
zcx_abapgit_exception=>raise( 'cancelled' ).
|
||||
ENDIF.
|
||||
|
||||
IF ls_item-obj_type = 'DEVC'.
|
||||
" Packages have the same filename across different folders. The path needs to be supplied
|
||||
" to find the correct file.
|
||||
|
@ -498,6 +524,10 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
|
||||
rs_checks-overwrite = warning_overwrite_find( lt_results ).
|
||||
|
||||
rs_checks-warning_package = warning_package_find(
|
||||
io_repo = io_repo
|
||||
it_results = lt_results ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -548,13 +578,24 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
|
||||
METHOD files_to_deserialize.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF rt_results.
|
||||
|
||||
|
||||
rt_results = zcl_abapgit_file_status=>status( io_repo ).
|
||||
DELETE rt_results WHERE match = abap_true. " Full match
|
||||
SORT rt_results BY obj_type ASCENDING obj_name ASCENDING.
|
||||
DELETE ADJACENT DUPLICATES FROM rt_results COMPARING obj_type obj_name.
|
||||
|
||||
DELETE rt_results WHERE obj_type IS INITIAL.
|
||||
DELETE rt_results WHERE lstate = zif_abapgit_definitions=>gc_state-added AND rstate IS INITIAL.
|
||||
|
||||
rt_results = prioritize_deser( rt_results ).
|
||||
|
||||
LOOP AT rt_results ASSIGNING <ls_result>.
|
||||
* handle namespaces
|
||||
REPLACE ALL OCCURRENCES OF '#' IN <ls_result>-obj_name WITH '/'.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -791,37 +832,70 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD warning_package.
|
||||
METHOD warning_package_adjust.
|
||||
|
||||
DATA: lv_question TYPE c LENGTH 200,
|
||||
lv_answer TYPE c,
|
||||
ls_tadir TYPE tadir.
|
||||
DATA: lt_overwrite LIKE it_overwrite,
|
||||
ls_overwrite LIKE LINE OF lt_overwrite.
|
||||
|
||||
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF lt_overwrite.
|
||||
|
||||
|
||||
ls_tadir = zcl_abapgit_tadir=>read_single(
|
||||
iv_object = is_item-obj_type
|
||||
iv_obj_name = is_item-obj_name ).
|
||||
* make sure to get the current status, as something might have changed in the meanwhile
|
||||
lt_overwrite = warning_package_find(
|
||||
it_results = ct_results
|
||||
io_repo = io_repo ).
|
||||
|
||||
IF NOT ls_tadir IS INITIAL AND ls_tadir-devclass <> iv_package.
|
||||
CONCATENATE 'Overwrite object' is_item-obj_type is_item-obj_name
|
||||
'from package' ls_tadir-devclass
|
||||
INTO lv_question SEPARATED BY space. "#EC NOTEXT
|
||||
|
||||
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
|
||||
titlebar = 'Warning'
|
||||
text_question = lv_question
|
||||
text_button_1 = 'Ok'
|
||||
icon_button_1 = 'ICON_DELETE'
|
||||
text_button_2 = 'Cancel'
|
||||
icon_button_2 = 'ICON_CANCEL'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false ). "#EC NOTEXT
|
||||
|
||||
IF lv_answer = '2'.
|
||||
rv_cancel = abap_true.
|
||||
LOOP AT lt_overwrite ASSIGNING <ls_overwrite>.
|
||||
READ TABLE it_overwrite INTO ls_overwrite WITH KEY
|
||||
obj_type = <ls_overwrite>-obj_type
|
||||
obj_name = <ls_overwrite>-obj_name.
|
||||
IF sy-subrc <> 0 OR ls_overwrite-decision IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( |Overwrite odd package { <ls_overwrite>-obj_type } {
|
||||
<ls_overwrite>-obj_name } undecided| ).
|
||||
ENDIF.
|
||||
|
||||
ENDIF.
|
||||
IF ls_overwrite-decision = 'N'.
|
||||
DELETE ct_results WHERE
|
||||
obj_type = <ls_overwrite>-obj_type AND
|
||||
obj_name = <ls_overwrite>-obj_name.
|
||||
ASSERT sy-subrc = 0.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "check_warning
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD warning_package_find.
|
||||
|
||||
DATA: lv_package TYPE devclass,
|
||||
ls_overwrite LIKE LINE OF rt_overwrite,
|
||||
ls_tadir TYPE tadir.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
|
||||
|
||||
|
||||
LOOP AT it_results ASSIGNING <ls_result>.
|
||||
|
||||
lv_package = zcl_abapgit_folder_logic=>path_to_package(
|
||||
iv_top = io_repo->get_package( )
|
||||
io_dot = io_repo->get_dot_abapgit( )
|
||||
iv_path = <ls_result>-path ).
|
||||
|
||||
ls_tadir = zcl_abapgit_tadir=>read_single(
|
||||
iv_object = <ls_result>-obj_type
|
||||
iv_obj_name = <ls_result>-obj_name ).
|
||||
|
||||
IF NOT ls_tadir IS INITIAL AND ls_tadir-devclass <> lv_package.
|
||||
* overwriting object from different package than expected
|
||||
CLEAR ls_overwrite.
|
||||
ls_overwrite-obj_type = <ls_result>-obj_type.
|
||||
ls_overwrite-obj_name = <ls_result>-obj_name.
|
||||
ls_overwrite-devclass = ls_tadir-devclass.
|
||||
APPEND ls_overwrite TO rt_overwrite.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -66,7 +66,6 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
!iv_drop_cache TYPE abap_bool DEFAULT abap_false
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS refresh_local .
|
||||
METHODS update_local_checksums
|
||||
IMPORTING
|
||||
!it_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt
|
||||
|
@ -191,10 +190,10 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'Current login language does not match master language' ).
|
||||
ENDIF.
|
||||
|
||||
* todo
|
||||
|
||||
rs_checks = zcl_abapgit_objects=>deserialize_checks( me ).
|
||||
|
||||
* todo
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -428,11 +427,6 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
ENDMETHOD. "refresh
|
||||
|
||||
|
||||
METHOD refresh_local. " For testing purposes, maybe removed later
|
||||
mv_do_local_refresh = abap_true.
|
||||
ENDMETHOD. "refresh_local
|
||||
|
||||
|
||||
METHOD set.
|
||||
|
||||
* TODO: refactor
|
||||
|
|
|
@ -90,7 +90,8 @@ INTERFACE zif_abapgit_definitions PUBLIC.
|
|||
TYPES: ty_overwrite_tt TYPE STANDARD TABLE OF ty_overwrite WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_deserialize_checks,
|
||||
overwrite TYPE ty_overwrite_tt,
|
||||
overwrite TYPE ty_overwrite_tt,
|
||||
warning_package TYPE ty_overwrite_tt,
|
||||
END OF ty_deserialize_checks.
|
||||
|
||||
TYPES:
|
||||
|
|
Loading…
Reference in New Issue
Block a user