mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Move check_and_create_package
to repo services (#6410)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
c267d2ac20
commit
43db85ea38
|
@ -37,11 +37,6 @@ CLASS zcl_abapgit_repo DEFINITION
|
|||
METHODS bind_listener
|
||||
IMPORTING
|
||||
!ii_listener TYPE REF TO zif_abapgit_repo_listener .
|
||||
METHODS check_and_create_package
|
||||
IMPORTING
|
||||
!iv_package TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!is_data TYPE zif_abapgit_persistence=>ty_repo .
|
||||
|
@ -199,7 +194,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_repo IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD bind_listener.
|
||||
|
@ -207,28 +202,18 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_and_create_package.
|
||||
METHOD check_abap_language_version.
|
||||
|
||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
DATA lv_package TYPE devclass.
|
||||
DATA lo_abapgit_abap_language_vers TYPE REF TO zcl_abapgit_abap_language_vers.
|
||||
DATA lv_text TYPE string.
|
||||
CREATE OBJECT lo_abapgit_abap_language_vers.
|
||||
|
||||
ls_item-obj_type = 'DEVC'.
|
||||
ls_item-obj_name = iv_package.
|
||||
|
||||
IF zcl_abapgit_objects=>exists( ls_item ) = abap_false.
|
||||
" Check if any package is included in remote
|
||||
READ TABLE mt_remote TRANSPORTING NO FIELDS
|
||||
WITH KEY file
|
||||
COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file.
|
||||
IF sy-subrc <> 0.
|
||||
" If not, prompt to create it
|
||||
lv_package = zcl_abapgit_services_basis=>create_package( iv_package ).
|
||||
IF lv_package IS NOT INITIAL.
|
||||
COMMIT WORK AND WAIT.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
IF lo_abapgit_abap_language_vers->is_import_allowed( io_repo = me
|
||||
iv_package = ms_data-package ) = abap_false.
|
||||
lv_text = |Repository cannot be imported. | &&
|
||||
|ABAP Language Version of linked package is not compatible with repository settings.|.
|
||||
zcx_abapgit_exception=>raise( iv_text = lv_text ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -922,19 +907,4 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
|
|||
METHOD zif_abapgit_repo~set_dot_abapgit.
|
||||
set( is_dot_abapgit = io_dot_abapgit->get_data( ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_abap_language_version.
|
||||
|
||||
DATA lo_abapgit_abap_language_vers TYPE REF TO zcl_abapgit_abap_language_vers.
|
||||
DATA lv_text TYPE string.
|
||||
CREATE OBJECT lo_abapgit_abap_language_vers.
|
||||
|
||||
IF lo_abapgit_abap_language_vers->is_import_allowed( io_repo = me
|
||||
iv_package = ms_data-package ) = abap_false.
|
||||
lv_text = |Repository cannot be imported. | &&
|
||||
|ABAP Language Version of linked package is not compatible with repository settings.|.
|
||||
zcx_abapgit_exception=>raise( iv_text = lv_text ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -553,7 +553,6 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
ls_repo-local_settings-labels = iv_labels.
|
||||
|
||||
lo_repo->set_local_settings( ls_repo-local_settings ).
|
||||
lo_repo->check_and_create_package( iv_package ).
|
||||
|
||||
ri_repo = lo_repo.
|
||||
|
||||
|
@ -615,9 +614,9 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
|
|||
ls_repo-local_settings-labels = iv_labels.
|
||||
|
||||
lo_repo->set_local_settings( ls_repo-local_settings ).
|
||||
|
||||
lo_repo->refresh( ).
|
||||
lo_repo->find_remote_dot_abapgit( ).
|
||||
lo_repo->check_and_create_package( iv_package ).
|
||||
|
||||
ri_repo = lo_repo.
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_ADDOFFLIN IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_page_addofflin IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD choose_labels.
|
||||
|
@ -220,7 +220,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_ADDOFFLIN IMPLEMENTATION.
|
|||
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-package
|
||||
iv_val = zcl_abapgit_services_basis=>create_package(
|
||||
iv_val = zcl_abapgit_services_repo=>create_package(
|
||||
iv_prefill_package = |{ mo_form_data->get( c_id-package ) }| ) ).
|
||||
IF mo_form_data->get( c_id-package ) IS NOT INITIAL.
|
||||
mo_validation_log = validate_form( mo_form_data ).
|
||||
|
|
|
@ -253,7 +253,7 @@ CLASS zcl_abapgit_gui_page_addonline IMPLEMENTATION.
|
|||
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-package
|
||||
iv_val = zcl_abapgit_services_basis=>create_package(
|
||||
iv_val = zcl_abapgit_services_repo=>create_package(
|
||||
iv_prefill_package = |{ mo_form_data->get( c_id-package ) }| ) ).
|
||||
IF mo_form_data->get( c_id-package ) IS NOT INITIAL.
|
||||
mo_validation_log = validate_form( mo_form_data ).
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
CLASS zcl_abapgit_services_basis DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS create_package
|
||||
IMPORTING
|
||||
!iv_prefill_package TYPE devclass OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_package) TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
CLASS-METHODS raise_error_if_package_exists
|
||||
IMPORTING
|
||||
iv_devclass TYPE scompkdtln-devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_services_basis IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD create_package.
|
||||
|
||||
DATA ls_package_data TYPE scompkdtln.
|
||||
DATA lv_create TYPE abap_bool.
|
||||
DATA li_popup TYPE REF TO zif_abapgit_popups.
|
||||
|
||||
ls_package_data-devclass = to_upper( iv_prefill_package ).
|
||||
|
||||
raise_error_if_package_exists( ls_package_data-devclass ).
|
||||
|
||||
li_popup = zcl_abapgit_ui_factory=>get_popups( ).
|
||||
|
||||
li_popup->popup_to_create_package(
|
||||
IMPORTING
|
||||
es_package_data = ls_package_data
|
||||
ev_create = lv_create ).
|
||||
|
||||
IF lv_create = abap_true.
|
||||
zcl_abapgit_factory=>get_sap_package( ls_package_data-devclass )->create( ls_package_data ).
|
||||
rv_package = ls_package_data-devclass.
|
||||
COMMIT WORK.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD raise_error_if_package_exists.
|
||||
|
||||
IF iv_devclass IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF zcl_abapgit_factory=>get_sap_package( iv_devclass )->exists( ) = abap_true.
|
||||
zcx_abapgit_exception=>raise( |Package { iv_devclass } already exists| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -1,17 +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_BASIS</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit - GUI Basis Services</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -62,7 +62,20 @@ CLASS zcl_abapgit_services_repo DEFINITION
|
|||
RETURNING
|
||||
VALUE(ri_log) TYPE REF TO zif_abapgit_log
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS create_package
|
||||
IMPORTING
|
||||
!iv_prefill_package TYPE devclass OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_package) TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS check_and_create_package
|
||||
IMPORTING
|
||||
!iv_package TYPE devclass
|
||||
!it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -96,6 +109,11 @@ CLASS zcl_abapgit_services_repo DEFINITION
|
|||
!is_repo_params TYPE zif_abapgit_services_repo=>ty_repo_params
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS raise_error_if_package_exists
|
||||
IMPORTING
|
||||
iv_devclass TYPE scompkdtln-devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -158,6 +176,22 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_and_create_package.
|
||||
|
||||
IF zcl_abapgit_factory=>get_sap_package( iv_package )->exists( ) = abap_false.
|
||||
" Check if any package is included in remote
|
||||
READ TABLE it_remote TRANSPORTING NO FIELDS
|
||||
WITH KEY file
|
||||
COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file.
|
||||
IF sy-subrc <> 0.
|
||||
" If not, prompt to create it
|
||||
create_package( iv_package ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_package.
|
||||
|
||||
DATA:
|
||||
|
@ -183,6 +217,32 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD create_package.
|
||||
|
||||
DATA ls_package_data TYPE scompkdtln.
|
||||
DATA lv_create TYPE abap_bool.
|
||||
DATA li_popup TYPE REF TO zif_abapgit_popups.
|
||||
|
||||
ls_package_data-devclass = condense( to_upper( iv_prefill_package ) ).
|
||||
|
||||
raise_error_if_package_exists( ls_package_data-devclass ).
|
||||
|
||||
li_popup = zcl_abapgit_ui_factory=>get_popups( ).
|
||||
|
||||
li_popup->popup_to_create_package(
|
||||
IMPORTING
|
||||
es_package_data = ls_package_data
|
||||
ev_create = lv_create ).
|
||||
|
||||
IF lv_create = abap_true.
|
||||
zcl_abapgit_factory=>get_sap_package( ls_package_data-devclass )->create( ls_package_data ).
|
||||
rv_package = ls_package_data-devclass.
|
||||
COMMIT WORK AND WAIT.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD delete_unnecessary_objects.
|
||||
|
||||
DATA:
|
||||
|
@ -282,6 +342,10 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
|||
iv_labels = is_repo_params-labels
|
||||
iv_main_lang_only = is_repo_params-main_lang_only ).
|
||||
|
||||
check_and_create_package(
|
||||
iv_package = is_repo_params-package
|
||||
it_remote = ro_repo->get_files_remote( ) ).
|
||||
|
||||
" Make sure there're no leftovers from previous repos
|
||||
ro_repo->zif_abapgit_repo~checksums( )->rebuild( ).
|
||||
ro_repo->reset_status( ). " TODO refactor later
|
||||
|
@ -311,6 +375,10 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
|||
iv_ign_subpkg = is_repo_params-ignore_subpackages
|
||||
iv_main_lang_only = is_repo_params-main_lang_only ).
|
||||
|
||||
check_and_create_package(
|
||||
iv_package = is_repo_params-package
|
||||
it_remote = ro_repo->get_files_remote( ) ).
|
||||
|
||||
" Make sure there're no leftovers from previous repos
|
||||
ro_repo->zif_abapgit_repo~checksums( )->rebuild( ).
|
||||
ro_repo->reset_status( ). " TODO refactor later
|
||||
|
@ -569,6 +637,19 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD raise_error_if_package_exists.
|
||||
|
||||
IF iv_devclass IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF zcl_abapgit_factory=>get_sap_package( iv_devclass )->exists( ) = abap_true.
|
||||
zcx_abapgit_exception=>raise( |Package { iv_devclass } already exists| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD refresh.
|
||||
|
||||
zcl_abapgit_repo_srv=>get_instance( )->get( iv_key )->refresh( ).
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
*"* use this source file for your ABAP unit test classes
|
||||
CLASS ltcl_sap_package_mock DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
@ -90,7 +89,7 @@ CLASS ltcl_create_package DEFINITION FINAL FOR TESTING
|
|||
setup,
|
||||
|
||||
raise_error_if_package_exists FOR TESTING RAISING cx_static_check,
|
||||
package_given_in_popup FOR TESTING RAISING cx_static_check,
|
||||
package_given_in_popup FOR TESTING RAISING cx_static_check,
|
||||
package_not_created_when_canc FOR TESTING RAISING cx_static_check,
|
||||
package_created_when_confirm FOR TESTING RAISING cx_static_check,
|
||||
|
||||
|
@ -177,7 +176,7 @@ CLASS ltcl_create_package IMPLEMENTATION.
|
|||
ii_sap_package = mo_sap_package_mock ).
|
||||
|
||||
TRY.
|
||||
mv_created_package = zcl_abapgit_services_basis=>create_package( mv_package ).
|
||||
mv_created_package = zcl_abapgit_services_repo=>create_package( mv_package ).
|
||||
CATCH zcx_abapgit_exception INTO mx_error.
|
||||
ENDTRY.
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
Loading…
Reference in New Issue
Block a user