mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Refactoring (#1279)
* URL: rename and add validation method plus validate url in NEW_ONLINE * optimize select * move write protection check * start refactoring gui away from deserializati/pull * mvoe ZCL_ABAPGIT_SERVICES_ABAPGIT to UI * delete ZCL_ABAPGIT_SERVICES_BKG moved to GUI page * move ZCL_ABAPGIT_SERVICES_GIT to UI * move ZCL_ABAPGIT_SERVICES_REPO to UI * fix indentation * overwrite popup refactored to UI
This commit is contained in:
parent
3293fe5461
commit
7152b4281a
|
@ -1,25 +1,37 @@
|
|||
CLASS zcl_abapgit_gui_page_bkg DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_gui_page
|
||||
FINAL
|
||||
CREATE PUBLIC INHERITING FROM zcl_abapgit_gui_page.
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||
zif_abapgit_gui_page~on_event REDEFINITION.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key .
|
||||
|
||||
METHODS zif_abapgit_gui_page~on_event
|
||||
REDEFINITION .
|
||||
PROTECTED SECTION.
|
||||
METHODS render_content REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_key TYPE zif_abapgit_persistence=>ty_repo-key.
|
||||
|
||||
METHODS:
|
||||
build_menu
|
||||
RETURNING VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar,
|
||||
render_data
|
||||
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html
|
||||
RAISING zcx_abapgit_exception.
|
||||
DATA mv_key TYPE zif_abapgit_persistence=>ty_repo-key .
|
||||
|
||||
METHODS build_menu
|
||||
RETURNING
|
||||
VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar .
|
||||
CLASS-METHODS update_task
|
||||
IMPORTING
|
||||
!is_bg_task TYPE zcl_abapgit_persist_background=>ty_background
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS render_data
|
||||
RETURNING
|
||||
VALUE(ro_html) TYPE REF TO zcl_abapgit_html
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -170,6 +182,25 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BKG IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_task.
|
||||
|
||||
DATA lo_persistence TYPE REF TO zcl_abapgit_persist_background.
|
||||
|
||||
CREATE OBJECT lo_persistence.
|
||||
|
||||
IF is_bg_task-method = zcl_abapgit_persist_background=>c_method-nothing.
|
||||
lo_persistence->delete( is_bg_task-key ).
|
||||
ELSE.
|
||||
lo_persistence->modify( is_bg_task ).
|
||||
ENDIF.
|
||||
|
||||
MESSAGE 'Saved' TYPE 'S' ##NO_TEXT.
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_page~on_event.
|
||||
|
||||
DATA ls_bg_task TYPE zcl_abapgit_persist_background=>ty_background.
|
||||
|
@ -178,7 +209,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BKG IMPLEMENTATION.
|
|||
WHEN zif_abapgit_definitions=>gc_action-bg_update.
|
||||
ls_bg_task = zcl_abapgit_html_action_utils=>decode_bg_update( iv_getdata ).
|
||||
ls_bg_task-key = mv_key.
|
||||
zcl_abapgit_services_bkg=>update_task( ls_bg_task ).
|
||||
update_task( ls_bg_task ).
|
||||
ev_state = zif_abapgit_definitions=>gc_event_state-re_render.
|
||||
ENDCASE.
|
||||
|
||||
|
|
|
@ -1183,14 +1183,14 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
|
|||
lv_finished = abap_true.
|
||||
|
||||
TRY.
|
||||
zcl_abapgit_url=>name( |{ lv_url }| ).
|
||||
zcl_abapgit_url=>validate( |{ lv_url }| ).
|
||||
IF iv_freeze_package = abap_false.
|
||||
zcl_abapgit_repo_srv=>get_instance( )->validate_package( lv_package ).
|
||||
ENDIF.
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
|
||||
" in case of validation errors we display the popup again
|
||||
CLEAR: lv_finished.
|
||||
CLEAR lv_finished.
|
||||
ENDTRY.
|
||||
|
||||
ENDWHILE.
|
||||
|
|
|
@ -5,37 +5,33 @@ CLASS zcl_abapgit_services_abapgit DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CONSTANTS c_abapgit_homepage TYPE string
|
||||
VALUE 'http://www.abapgit.org' ##NO_TEXT.
|
||||
CONSTANTS c_abapgit_wikipage TYPE string
|
||||
VALUE 'http://docs.abapgit.org'.
|
||||
CONSTANTS c_package_abapgit TYPE devclass
|
||||
VALUE '$ABAPGIT'.
|
||||
CONSTANTS c_package_plugins TYPE devclass
|
||||
VALUE '$ABAPGIT_PLUGINS'.
|
||||
CONSTANTS c_abapgit_url TYPE string
|
||||
VALUE 'https://github.com/larshp/abapGit.git'.
|
||||
CONSTANTS c_plugins_url TYPE string
|
||||
VALUE 'https://github.com/larshp/abapGit-plugins.git'.
|
||||
CONSTANTS c_abapgit_homepage TYPE string VALUE 'http://www.abapgit.org' ##NO_TEXT.
|
||||
CONSTANTS c_abapgit_wikipage TYPE string VALUE 'http://docs.abapgit.org' ##NO_TEXT.
|
||||
CONSTANTS c_package_abapgit TYPE devclass VALUE '$ABAPGIT' ##NO_TEXT.
|
||||
CONSTANTS c_package_plugins TYPE devclass VALUE '$ABAPGIT_PLUGINS' ##NO_TEXT.
|
||||
CONSTANTS c_abapgit_url TYPE string VALUE 'https://github.com/larshp/abapGit.git' ##NO_TEXT.
|
||||
CONSTANTS c_plugins_url TYPE string VALUE 'https://github.com/larshp/abapGit-plugins.git' ##NO_TEXT.
|
||||
|
||||
CLASS-METHODS open_abapgit_homepage
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS open_abapgit_wikipage
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS install_abapgit
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS install_abapgit_pi
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS is_installed
|
||||
RETURNING VALUE(rv_installed) TYPE abap_bool.
|
||||
|
||||
RETURNING
|
||||
VALUE(rv_installed) TYPE abap_bool .
|
||||
CLASS-METHODS is_installed_pi
|
||||
RETURNING VALUE(rv_installed) TYPE abap_bool.
|
||||
|
||||
RETURNING
|
||||
VALUE(rv_installed) TYPE abap_bool .
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-METHODS do_install
|
||||
|
@ -84,7 +80,9 @@ CLASS ZCL_ABAPGIT_SERVICES_ABAPGIT IMPLEMENTATION.
|
|||
lo_repo->initialize( ).
|
||||
lo_repo->find_remote_dot_abapgit( ).
|
||||
lo_repo->status( ). " check for errors
|
||||
lo_repo->deserialize( ).
|
||||
|
||||
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
|
||||
|
||||
zcl_abapgit_services_repo=>toggle_favorite( lo_repo->get_key( ) ).
|
||||
ENDIF.
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
<CLSNAME>ZCL_ABAPGIT_SERVICES_ABAPGIT</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Services</DESCRIPT>
|
||||
<DESCRIPT>UI - Services</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
|
@ -1,58 +1,83 @@
|
|||
CLASS zcl_abapgit_services_git DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
CLASS zcl_abapgit_services_git DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES: BEGIN OF ty_commit_fields,
|
||||
repo_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||
committer_name TYPE string,
|
||||
committer_email TYPE string,
|
||||
author_name TYPE string,
|
||||
author_email TYPE string,
|
||||
comment TYPE string,
|
||||
body TYPE string,
|
||||
END OF ty_commit_fields.
|
||||
TYPES:
|
||||
BEGIN OF ty_commit_fields,
|
||||
repo_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||
committer_name TYPE string,
|
||||
committer_email TYPE string,
|
||||
author_name TYPE string,
|
||||
author_email TYPE string,
|
||||
comment TYPE string,
|
||||
body TYPE string,
|
||||
END OF ty_commit_fields .
|
||||
|
||||
CLASS-METHODS pull
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS reset
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS create_branch
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS switch_branch
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS delete_branch
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS create_tag
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS delete_tag
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS switch_tag
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS tag_overview
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS commit
|
||||
IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||
is_commit TYPE ty_commit_fields
|
||||
io_stage TYPE REF TO zcl_abapgit_stage
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo_online
|
||||
!is_commit TYPE ty_commit_fields
|
||||
!io_stage TYPE REF TO zcl_abapgit_stage
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -239,12 +264,9 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
|||
|
||||
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
||||
|
||||
IF lo_repo->get_local_settings( )-write_protected = abap_true.
|
||||
zcx_abapgit_exception=>raise( 'Cannot pull. Local code is write-protected by repo config' ).
|
||||
ENDIF.
|
||||
|
||||
lo_repo->refresh( ).
|
||||
lo_repo->deserialize( ).
|
||||
|
||||
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
|
@ -301,7 +323,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
|||
|
||||
ENDIF.
|
||||
|
||||
lo_repo->deserialize( ).
|
||||
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -331,9 +353,9 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
|||
|
||||
COMMIT WORK.
|
||||
|
||||
lo_repo->deserialize( ).
|
||||
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
|
||||
|
||||
ENDMETHOD. "switch_branch
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD switch_tag.
|
||||
|
@ -352,7 +374,7 @@ CLASS ZCL_ABAPGIT_SERVICES_GIT IMPLEMENTATION.
|
|||
|
||||
COMMIT WORK.
|
||||
|
||||
lo_repo->deserialize( ).
|
||||
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
<CLSNAME>ZCL_ABAPGIT_SERVICES_GIT</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Git services</DESCRIPT>
|
||||
<DESCRIPT>UI - Git services</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
|
@ -1,52 +1,89 @@
|
|||
CLASS zcl_abapgit_services_repo DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
CLASS zcl_abapgit_services_repo DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS clone
|
||||
IMPORTING iv_url TYPE string
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_url TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS refresh
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS remove
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS purge
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS new_offline
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS remote_attach
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS remote_detach
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS remote_change
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS refresh_local_checksums
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS toggle_favorite
|
||||
IMPORTING iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS open_se80
|
||||
IMPORTING iv_package TYPE devclass
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!iv_package TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS transport_to_branch
|
||||
IMPORTING iv_repository_key TYPE zif_abapgit_persistence=>ty_value
|
||||
RAISING zcx_abapgit_exception zcx_abapgit_cancel.
|
||||
IMPORTING
|
||||
!iv_repository_key TYPE zif_abapgit_persistence=>ty_value
|
||||
RAISING
|
||||
zcx_abapgit_exception
|
||||
zcx_abapgit_cancel .
|
||||
CLASS-METHODS gui_deserialize
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-METHODS popup_overwrite
|
||||
CHANGING
|
||||
!ct_overwrite TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -75,7 +112,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
lo_repo->initialize( ).
|
||||
lo_repo->find_remote_dot_abapgit( ).
|
||||
lo_repo->status( ). " check for errors
|
||||
lo_repo->deserialize( ).
|
||||
|
||||
gui_deserialize( lo_repo ).
|
||||
|
||||
zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lo_repo->get_key( ) ). " Set default repo for user
|
||||
|
||||
|
@ -84,6 +122,19 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
ENDMETHOD. "clone
|
||||
|
||||
|
||||
METHOD gui_deserialize.
|
||||
|
||||
DATA: ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks.
|
||||
|
||||
ls_checks = io_repo->deserialize_checks( ).
|
||||
|
||||
popup_overwrite( CHANGING ct_overwrite = ls_checks-overwrite ).
|
||||
|
||||
io_repo->deserialize( ls_checks ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD new_offline.
|
||||
|
||||
DATA: lo_repo TYPE REF TO zcl_abapgit_repo,
|
||||
|
@ -119,6 +170,50 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
ENDMETHOD. " open_se80.
|
||||
|
||||
|
||||
METHOD popup_overwrite.
|
||||
|
||||
DATA: lt_columns TYPE stringtab,
|
||||
lt_selected LIKE ct_overwrite,
|
||||
lv_column LIKE LINE OF lt_columns.
|
||||
|
||||
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF ct_overwrite.
|
||||
|
||||
|
||||
IF lines( ct_overwrite ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_column = 'OBJ_TYPE'.
|
||||
INSERT lv_column INTO TABLE lt_columns.
|
||||
lv_column = 'OBJ_NAME'.
|
||||
INSERT lv_column INTO TABLE lt_columns.
|
||||
|
||||
zcl_abapgit_popups=>popup_to_select_from_list(
|
||||
EXPORTING
|
||||
it_list = ct_overwrite
|
||||
i_header_text = |The following Objects have been modified locally.|
|
||||
&& | Select the Objects which should be overwritten.|
|
||||
i_select_column_text = 'Overwrite?'
|
||||
it_columns_to_display = lt_columns
|
||||
IMPORTING
|
||||
et_list = lt_selected ).
|
||||
* todo, it should be possible for the user to click cancel in the popup
|
||||
|
||||
LOOP AT ct_overwrite ASSIGNING <ls_overwrite>.
|
||||
READ TABLE lt_selected WITH KEY
|
||||
obj_type = <ls_overwrite>-obj_type
|
||||
obj_name = <ls_overwrite>-obj_name
|
||||
TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc = 0.
|
||||
<ls_overwrite>-decision = 'Y'.
|
||||
ELSE.
|
||||
<ls_overwrite>-decision = 'N'.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD purge.
|
||||
|
||||
DATA: lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
|
||||
|
@ -142,8 +237,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
|
||||
IF lines( lt_tadir ) > 0.
|
||||
|
||||
lv_question = |This will DELETE all objects in package { lv_package }|
|
||||
&& | ({ lines( lt_tadir ) } objects) from the system|. "#EC NOTEXT
|
||||
lv_question = |This will DELETE all objects in package { lv_package
|
||||
} ({ lines( lt_tadir ) } objects) from the system|. "#EC NOTEXT
|
||||
|
||||
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
|
||||
titlebar = 'Uninstall'
|
||||
|
@ -234,7 +329,9 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
|
||||
ENDIF.
|
||||
|
||||
zcl_abapgit_repo_srv=>get_instance( )->switch_repo_type( iv_key = iv_key iv_offline = abap_false ).
|
||||
zcl_abapgit_repo_srv=>get_instance( )->switch_repo_type(
|
||||
iv_key = iv_key
|
||||
iv_offline = abap_false ).
|
||||
|
||||
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
||||
lo_repo->set_url( ls_popup-url ).
|
||||
|
@ -267,7 +364,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD. "remote_change
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD remote_detach.
|
||||
|
@ -292,7 +389,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD. "remote_detach
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD remove.
|
||||
|
@ -305,8 +402,8 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
|
||||
lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
||||
lv_package = lo_repo->get_package( ).
|
||||
lv_question = |This will remove the repository reference to the package { lv_package }|
|
||||
&& '. All objects will safely remain in the system.'.
|
||||
lv_question = |This will remove the repository reference to the package { lv_package
|
||||
}. All objects will safely remain in the system.|.
|
||||
|
||||
lv_answer = zcl_abapgit_popups=>popup_to_confirm(
|
||||
titlebar = 'Remove'
|
||||
|
@ -326,17 +423,18 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD. "remove
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD toggle_favorite.
|
||||
|
||||
zcl_abapgit_persistence_user=>get_instance( )->toggle_favorite( iv_key ).
|
||||
|
||||
ENDMETHOD. " toggle_favorite.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD transport_to_branch.
|
||||
|
||||
DATA:
|
||||
lo_repository TYPE REF TO zcl_abapgit_repo_online,
|
||||
lo_transport_to_branch TYPE REF TO zcl_abapgit_transport_2_branch,
|
||||
|
@ -365,5 +463,6 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION.
|
|||
io_repository = lo_repository
|
||||
is_transport_to_branch = ls_transport_to_branch
|
||||
it_transport_objects = lt_transport_objects ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -6,7 +6,7 @@
|
|||
<CLSNAME>ZCL_ABAPGIT_SERVICES_REPO</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Repository services</DESCRIPT>
|
||||
<DESCRIPT>UI - Repository services</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
|
@ -5,23 +5,28 @@ CLASS zcl_abapgit_url DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS validate
|
||||
IMPORTING
|
||||
!iv_url TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS host
|
||||
IMPORTING
|
||||
!iv_repo TYPE string
|
||||
!iv_url TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_host) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS name
|
||||
IMPORTING
|
||||
!iv_repo TYPE string
|
||||
!iv_url TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_name) TYPE string
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS path_name
|
||||
IMPORTING
|
||||
!iv_repo TYPE string
|
||||
!iv_url TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_path_name) TYPE string
|
||||
RAISING
|
||||
|
@ -30,7 +35,7 @@ CLASS zcl_abapgit_url DEFINITION
|
|||
|
||||
CLASS-METHODS regex
|
||||
IMPORTING
|
||||
!iv_repo TYPE string
|
||||
!iv_url TYPE string
|
||||
EXPORTING
|
||||
!ev_host TYPE string
|
||||
!ev_path TYPE string
|
||||
|
@ -46,7 +51,7 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
|
|||
|
||||
METHOD host.
|
||||
|
||||
regex( EXPORTING iv_repo = iv_repo
|
||||
regex( EXPORTING iv_url = iv_url
|
||||
IMPORTING ev_host = rv_host ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -54,7 +59,7 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
|
|||
|
||||
METHOD name.
|
||||
|
||||
regex( EXPORTING iv_repo = iv_repo
|
||||
regex( EXPORTING iv_url = iv_url
|
||||
IMPORTING ev_name = rv_name ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -64,7 +69,7 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
|
|||
|
||||
DATA: lv_host TYPE string ##NEEDED.
|
||||
|
||||
FIND REGEX '(.*://[^/]*)(.*)' IN iv_repo
|
||||
FIND REGEX '(.*://[^/]*)(.*)' IN iv_url
|
||||
SUBMATCHES lv_host rv_path_name.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -72,11 +77,18 @@ CLASS ZCL_ABAPGIT_URL IMPLEMENTATION.
|
|||
|
||||
METHOD regex.
|
||||
|
||||
FIND REGEX '(.*://[^/]*)(.*/)([^\.]*)[\.git]?' IN iv_repo
|
||||
FIND REGEX '(.*://[^/]*)(.*/)([^\.]*)[\.git]?' IN iv_url
|
||||
SUBMATCHES ev_host ev_path ev_name.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'Malformed URL' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD validate.
|
||||
|
||||
regex( iv_url ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -263,6 +263,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
|
|||
DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
|
||||
lo_repo TYPE REF TO zcl_abapgit_repo_online,
|
||||
lt_list TYPE zcl_abapgit_persist_background=>tt_background,
|
||||
ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks,
|
||||
lv_repo_name TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
|
||||
|
@ -299,7 +300,8 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
|
|||
|
||||
CASE <ls_list>-method.
|
||||
WHEN zcl_abapgit_persist_background=>c_method-pull.
|
||||
lo_repo->deserialize( ).
|
||||
* todo, set defaults in ls_checks
|
||||
lo_repo->deserialize( ls_checks ).
|
||||
WHEN zcl_abapgit_persist_background=>c_method-push.
|
||||
push( io_repo = lo_repo
|
||||
is_settings = <ls_list> ).
|
||||
|
|
|
@ -28,10 +28,18 @@ CLASS zcl_abapgit_objects DEFINITION
|
|||
CLASS-METHODS deserialize
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
!is_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks
|
||||
RETURNING
|
||||
VALUE(rt_accessed_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS deserialize_checks
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
RETURNING
|
||||
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS delete
|
||||
IMPORTING
|
||||
!it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt
|
||||
|
@ -73,59 +81,84 @@ CLASS zcl_abapgit_objects DEFINITION
|
|||
VALUE(rt_types) TYPE ty_types_tt .
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-METHODS files_to_deserialize
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
RETURNING
|
||||
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS check_duplicates
|
||||
IMPORTING it_files TYPE zif_abapgit_definitions=>ty_files_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!it_files TYPE zif_abapgit_definitions=>ty_files_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS create_object
|
||||
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
iv_language TYPE spras
|
||||
is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL
|
||||
iv_native_only TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING VALUE(ri_obj) TYPE REF TO zif_abapgit_object
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS
|
||||
prioritize_deser
|
||||
IMPORTING it_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RETURNING VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt.
|
||||
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
!iv_language TYPE spras
|
||||
!is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL
|
||||
!iv_native_only TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING
|
||||
VALUE(ri_obj) TYPE REF TO zif_abapgit_object
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS prioritize_deser
|
||||
IMPORTING
|
||||
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RETURNING
|
||||
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt .
|
||||
CLASS-METHODS class_name
|
||||
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
RETURNING VALUE(rv_class_name) TYPE string.
|
||||
|
||||
CLASS-METHODS warning_overwrite
|
||||
CHANGING ct_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
RETURNING
|
||||
VALUE(rv_class_name) TYPE string .
|
||||
CLASS-METHODS warning_overwrite_adjust
|
||||
IMPORTING
|
||||
!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_overwrite_find
|
||||
IMPORTING
|
||||
!it_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RETURNING
|
||||
VALUE(rt_overwrite) TYPE zif_abapgit_definitions=>ty_overwrite_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS warning_package
|
||||
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
iv_package TYPE devclass
|
||||
RETURNING VALUE(rv_cancel) TYPE abap_bool
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
!iv_package TYPE devclass
|
||||
RETURNING
|
||||
VALUE(rv_cancel) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS update_package_tree
|
||||
IMPORTING iv_package TYPE devclass.
|
||||
|
||||
IMPORTING
|
||||
!iv_package TYPE devclass .
|
||||
CLASS-METHODS delete_obj
|
||||
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS compare_remote_to_local
|
||||
IMPORTING
|
||||
io_object TYPE REF TO zif_abapgit_object
|
||||
it_remote TYPE zif_abapgit_definitions=>ty_files_tt
|
||||
is_result TYPE zif_abapgit_definitions=>ty_result
|
||||
!io_object TYPE REF TO zif_abapgit_object
|
||||
!it_remote TYPE zif_abapgit_definitions=>ty_files_tt
|
||||
!is_result TYPE zif_abapgit_definitions=>ty_result
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS deserialize_objects
|
||||
IMPORTING it_objects TYPE ty_deserialization_tt
|
||||
iv_ddic TYPE abap_bool DEFAULT abap_false
|
||||
iv_descr TYPE string
|
||||
CHANGING ct_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
IMPORTING
|
||||
!it_objects TYPE ty_deserialization_tt
|
||||
!iv_ddic TYPE abap_bool DEFAULT abap_false
|
||||
!iv_descr TYPE string
|
||||
CHANGING
|
||||
!ct_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -352,22 +385,19 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <ls_result> TYPE zif_abapgit_definitions=>ty_result,
|
||||
<ls_deser> LIKE LINE OF lt_late.
|
||||
|
||||
|
||||
lv_package = io_repo->get_package( ).
|
||||
|
||||
zcl_abapgit_default_task=>get_instance( )->set( lv_package ).
|
||||
|
||||
zcl_abapgit_objects_activation=>clear( ).
|
||||
|
||||
lt_remote = io_repo->get_files_remote( ).
|
||||
|
||||
lt_results = zcl_abapgit_file_status=>status( io_repo ).
|
||||
DELETE lt_results WHERE match = abap_true. " Full match
|
||||
SORT lt_results BY obj_type ASCENDING obj_name ASCENDING.
|
||||
DELETE ADJACENT DUPLICATES FROM lt_results COMPARING obj_type obj_name.
|
||||
lt_results = files_to_deserialize( io_repo ).
|
||||
|
||||
lt_results = prioritize_deser( lt_results ).
|
||||
|
||||
warning_overwrite( CHANGING ct_results = lt_results ).
|
||||
warning_overwrite_adjust(
|
||||
EXPORTING it_overwrite = is_checks-overwrite
|
||||
CHANGING ct_results = lt_results ).
|
||||
|
||||
CREATE OBJECT lo_progress
|
||||
EXPORTING
|
||||
|
@ -459,6 +489,18 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
ENDMETHOD. "deserialize
|
||||
|
||||
|
||||
METHOD deserialize_checks.
|
||||
|
||||
DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt.
|
||||
|
||||
|
||||
lt_results = files_to_deserialize( io_repo ).
|
||||
|
||||
rs_checks-overwrite = warning_overwrite_find( lt_results ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD deserialize_objects.
|
||||
|
||||
DATA: lo_progress TYPE REF TO zcl_abapgit_progress.
|
||||
|
@ -504,6 +546,18 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
ENDMETHOD. "exists
|
||||
|
||||
|
||||
METHOD files_to_deserialize.
|
||||
|
||||
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.
|
||||
|
||||
rt_results = prioritize_deser( rt_results ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD has_changed_since.
|
||||
rv_changed = abap_true. " Assume changed
|
||||
|
||||
|
@ -683,56 +737,56 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
ENDMETHOD. "update_package_tree
|
||||
|
||||
|
||||
METHOD warning_overwrite.
|
||||
METHOD warning_overwrite_adjust.
|
||||
|
||||
DATA: lt_results_overwrite LIKE ct_results,
|
||||
lt_confirmed_overwrite LIKE ct_results,
|
||||
lt_columns TYPE stringtab,
|
||||
lv_column LIKE LINE OF lt_columns.
|
||||
DATA: lt_overwrite LIKE it_overwrite,
|
||||
ls_overwrite LIKE LINE OF lt_overwrite.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF ct_results.
|
||||
FIELD-SYMBOLS: <ls_overwrite> LIKE LINE OF lt_overwrite.
|
||||
|
||||
LOOP AT ct_results ASSIGNING <ls_result>
|
||||
WHERE NOT obj_type IS INITIAL.
|
||||
|
||||
IF <ls_result>-lstate IS NOT INITIAL
|
||||
AND <ls_result>-lstate <> zif_abapgit_definitions=>gc_state-deleted
|
||||
AND NOT ( <ls_result>-lstate = zif_abapgit_definitions=>gc_state-added
|
||||
AND <ls_result>-rstate IS INITIAL ).
|
||||
* make sure to get the current status, as something might have changed in the meanwhile
|
||||
lt_overwrite = warning_overwrite_find( ct_results ).
|
||||
|
||||
"current object has been modified locally, add to table for popup
|
||||
APPEND <ls_result> TO lt_results_overwrite.
|
||||
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 { <ls_overwrite>-obj_type } {
|
||||
<ls_overwrite>-obj_name } undecided| ).
|
||||
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.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
IF lines( lt_results_overwrite ) > 0.
|
||||
ENDMETHOD.
|
||||
|
||||
lv_column = `OBJ_TYPE`.
|
||||
INSERT lv_column INTO TABLE lt_columns.
|
||||
lv_column = `OBJ_NAME`.
|
||||
INSERT lv_column INTO TABLE lt_columns.
|
||||
|
||||
"all returned objects will be overwritten
|
||||
zcl_abapgit_popups=>popup_to_select_from_list(
|
||||
EXPORTING
|
||||
it_list = lt_results_overwrite
|
||||
i_header_text = |The following Objects have been modified locally.|
|
||||
&& | Select the Objects which should be overwritten.|
|
||||
i_select_column_text = 'Overwrite?'
|
||||
it_columns_to_display = lt_columns
|
||||
IMPORTING
|
||||
et_list = lt_confirmed_overwrite ).
|
||||
METHOD warning_overwrite_find.
|
||||
|
||||
LOOP AT lt_results_overwrite ASSIGNING <ls_result>.
|
||||
READ TABLE lt_confirmed_overwrite TRANSPORTING NO FIELDS
|
||||
WITH KEY obj_type = <ls_result>-obj_type
|
||||
obj_name = <ls_result>-obj_name.
|
||||
IF sy-subrc <> 0.
|
||||
DELETE TABLE ct_results FROM <ls_result>.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
DATA: ls_overwrite LIKE LINE OF rt_overwrite.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
|
||||
|
||||
LOOP AT it_results ASSIGNING <ls_result>
|
||||
WHERE NOT obj_type IS INITIAL.
|
||||
IF <ls_result>-lstate IS NOT INITIAL
|
||||
AND <ls_result>-lstate <> zif_abapgit_definitions=>gc_state-deleted
|
||||
AND NOT ( <ls_result>-lstate = zif_abapgit_definitions=>gc_state-added
|
||||
AND <ls_result>-rstate IS INITIAL ).
|
||||
* current object has been modified locally, add to table
|
||||
CLEAR ls_overwrite.
|
||||
MOVE-CORRESPONDING <ls_result> TO ls_overwrite.
|
||||
APPEND ls_overwrite TO rt_overwrite.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ CLASS ltcl_dangerous IMPLEMENTATION.
|
|||
lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt,
|
||||
lv_msg TYPE string,
|
||||
lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||
ls_checks TYPE zif_abapgit_definitions=>ty_deserialize_checks,
|
||||
lt_types TYPE zcl_abapgit_objects=>ty_types_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF lt_results,
|
||||
|
@ -61,7 +62,7 @@ CLASS ltcl_dangerous IMPLEMENTATION.
|
|||
iv_branch_name = 'refs/heads/master'
|
||||
iv_package = c_package ).
|
||||
lo_repo->status( ).
|
||||
lo_repo->deserialize( ).
|
||||
lo_repo->deserialize( ls_checks ).
|
||||
|
||||
lt_tadir = zcl_abapgit_tadir=>read( c_package ).
|
||||
LOOP AT lt_types ASSIGNING <lv_type>.
|
||||
|
|
|
@ -7,6 +7,11 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS deserialize_checks
|
||||
RETURNING
|
||||
VALUE(rs_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!is_data TYPE zif_abapgit_persistence=>ty_repo .
|
||||
|
@ -52,6 +57,8 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS deserialize
|
||||
IMPORTING
|
||||
VALUE(is_checks) TYPE zif_abapgit_definitions=>ty_deserialize_checks
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS refresh
|
||||
|
@ -146,11 +153,8 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
lt_requirements TYPE STANDARD TABLE OF zif_abapgit_dot_abapgit=>ty_requirement,
|
||||
lx_error TYPE REF TO zcx_abapgit_exception.
|
||||
|
||||
find_remote_dot_abapgit( ).
|
||||
|
||||
IF get_dot_abapgit( )->get_master_language( ) <> sy-langu.
|
||||
zcx_abapgit_exception=>raise( 'Current login language does not match master language' ).
|
||||
ENDIF.
|
||||
deserialize_checks( ).
|
||||
|
||||
lt_requirements = get_dot_abapgit( )->get_data( )-requirements.
|
||||
IF lt_requirements IS NOT INITIAL.
|
||||
|
@ -159,14 +163,13 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
TRY.
|
||||
lt_updated_files = zcl_abapgit_objects=>deserialize( me ).
|
||||
|
||||
lt_updated_files = zcl_abapgit_objects=>deserialize(
|
||||
io_repo = me
|
||||
is_checks = is_checks ).
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
|
||||
" ensure to reset default transport request task
|
||||
* ensure to reset default transport request task
|
||||
zcl_abapgit_default_task=>get_instance( )->reset( ).
|
||||
RAISE EXCEPTION lx_error.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
APPEND get_dot_abapgit( )->get_signature( ) TO lt_updated_files.
|
||||
|
@ -178,6 +181,23 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD deserialize_checks.
|
||||
|
||||
find_remote_dot_abapgit( ).
|
||||
|
||||
IF get_local_settings( )-write_protected = abap_true.
|
||||
zcx_abapgit_exception=>raise( 'Cannot deserialize. Local code is write-protected by repo config' ).
|
||||
ELSEIF get_dot_abapgit( )->get_master_language( ) <> sy-langu.
|
||||
zcx_abapgit_exception=>raise( 'Current login language does not match master language' ).
|
||||
ENDIF.
|
||||
|
||||
* todo
|
||||
|
||||
rs_checks = zcl_abapgit_objects=>deserialize_checks( me ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD find_remote_dot_abapgit.
|
||||
|
||||
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF mt_remote.
|
||||
|
|
|
@ -147,13 +147,9 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
|
|||
|
||||
METHOD deserialize.
|
||||
|
||||
IF ms_data-local_settings-write_protected = abap_true.
|
||||
zcx_abapgit_exception=>raise( 'Cannot deserialize. Local code is write-protected by repo config' ).
|
||||
ENDIF.
|
||||
|
||||
initialize( ).
|
||||
|
||||
super->deserialize( ).
|
||||
super->deserialize( is_checks ).
|
||||
|
||||
set( iv_sha1 = mv_branch ).
|
||||
|
||||
|
|
|
@ -243,7 +243,12 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
|
|||
lv_key TYPE zif_abapgit_persistence=>ty_repo-key.
|
||||
|
||||
|
||||
ASSERT NOT iv_url IS INITIAL
|
||||
AND NOT iv_branch_name IS INITIAL
|
||||
AND NOT iv_package IS INITIAL.
|
||||
|
||||
validate_package( iv_package ).
|
||||
zcl_abapgit_url=>validate( |{ iv_url }| ).
|
||||
|
||||
lv_key = mo_persistence->add(
|
||||
iv_url = iv_url
|
||||
|
@ -330,8 +335,9 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
|
|||
|
||||
METHOD validate_package.
|
||||
|
||||
DATA: ls_devclass TYPE tdevc,
|
||||
lt_repos TYPE zif_abapgit_persistence=>tt_repo.
|
||||
DATA: lv_as4user TYPE tdevc-as4user,
|
||||
lt_repos TYPE zif_abapgit_persistence=>tt_repo.
|
||||
|
||||
|
||||
IF iv_package IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( 'add, package empty' ).
|
||||
|
@ -341,16 +347,14 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION.
|
|||
zcx_abapgit_exception=>raise( 'not possible to use $TMP, create new (local) package' ).
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE *
|
||||
FROM tdevc
|
||||
INTO ls_devclass
|
||||
WHERE devclass = iv_package. "#EC CI_GENBUFF
|
||||
|
||||
SELECT SINGLE as4user FROM tdevc
|
||||
INTO lv_as4user
|
||||
WHERE devclass = iv_package. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Package { iv_package } not found| ).
|
||||
ENDIF.
|
||||
|
||||
IF is_sap_object_allowed( ) = abap_false AND ls_devclass-as4user = 'SAP'.
|
||||
IF is_sap_object_allowed( ) = abap_false AND lv_as4user = 'SAP'.
|
||||
zcx_abapgit_exception=>raise( |Package { iv_package } not allowed| ).
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
CLASS zcl_abapgit_services_bkg DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS update_task
|
||||
IMPORTING is_bg_task TYPE zcl_abapgit_persist_background=>ty_background
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_SERVICES_BKG IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD update_task.
|
||||
|
||||
DATA lo_persistence TYPE REF TO zcl_abapgit_persist_background.
|
||||
|
||||
CREATE OBJECT lo_persistence.
|
||||
|
||||
IF is_bg_task-method = zcl_abapgit_persist_background=>c_method-nothing.
|
||||
lo_persistence->delete( is_bg_task-key ).
|
||||
ELSE.
|
||||
lo_persistence->modify( is_bg_task ).
|
||||
ENDIF.
|
||||
|
||||
MESSAGE 'Saved' TYPE 'S' ##NO_TEXT.
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_SERVICES_BKG</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Background services</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -394,7 +394,8 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
|
|||
|
||||
lo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ).
|
||||
lo_repo->set_files_remote( unzip_file( file_upload( ) ) ).
|
||||
lo_repo->deserialize( ).
|
||||
|
||||
zcl_abapgit_services_repo=>gui_deserialize( lo_repo ).
|
||||
|
||||
ENDMETHOD. "import
|
||||
|
||||
|
|
|
@ -79,6 +79,20 @@ INTERFACE zif_abapgit_definitions PUBLIC.
|
|||
END OF ty_file_item .
|
||||
TYPES:
|
||||
ty_files_item_tt TYPE STANDARD TABLE OF ty_file_item WITH DEFAULT KEY .
|
||||
|
||||
TYPES: ty_yes_no TYPE c LENGTH 1.
|
||||
|
||||
TYPES: BEGIN OF ty_overwrite.
|
||||
INCLUDE TYPE ty_item.
|
||||
TYPES: decision TYPE ty_yes_no,
|
||||
END OF ty_overwrite.
|
||||
|
||||
TYPES: ty_overwrite_tt TYPE STANDARD TABLE OF ty_overwrite WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_deserialize_checks,
|
||||
overwrite TYPE ty_overwrite_tt,
|
||||
END OF ty_deserialize_checks.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_metadata,
|
||||
class TYPE string,
|
||||
|
|
Loading…
Reference in New Issue
Block a user