mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Refactoring of ZCL_ABAPGIT_ENVIRONMENT (#2826)
* Refactoring of ZCL_ABAPGIT_ENVIRONMENT #2810 * fixes saplint issues * fixes saplint isues * fixes saplint issues * fixes issue based on review * align zcl_abapgit_objects.clas.abap to master * add the test class again
This commit is contained in:
parent
3f05693262
commit
a5ebe60642
|
@ -188,7 +188,7 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_REPO IMPLEMENTATION.
|
|||
LOOP AT lt_content INTO ls_content.
|
||||
MOVE-CORRESPONDING from_xml( ls_content-data_str ) TO ls_repo.
|
||||
IF ls_repo-local_settings-write_protected = abap_false AND
|
||||
zcl_abapgit_environment=>is_repo_object_changes_allowed( ) = abap_false.
|
||||
zcl_abapgit_factory=>get_environment( )->is_repo_object_changes_allowed( ) = abap_false.
|
||||
ls_repo-local_settings-write_protected = abap_true.
|
||||
ENDIF.
|
||||
ls_repo-key = ls_content-value.
|
||||
|
|
|
@ -190,7 +190,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_SETT IMPLEMENTATION.
|
|||
|
||||
CLEAR lv_checked.
|
||||
IF ls_settings-write_protected = abap_true.
|
||||
IF zcl_abapgit_environment=>is_repo_object_changes_allowed( ) = abap_true.
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_repo_object_changes_allowed( ) = abap_true.
|
||||
lv_checked = | checked|.
|
||||
ELSE.
|
||||
lv_checked = | checked disabled|.
|
||||
|
|
|
@ -18,6 +18,7 @@ CLASS zcl_abapgit_hotkeys DEFINITION
|
|||
RETURNING
|
||||
VALUE(rv_yes) TYPE abap_bool.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
mc_hotkey_interface TYPE string VALUE `ZIF_ABAPGIT_GUI_PAGE_HOTKEY` ##NO_TEXT.
|
||||
|
@ -51,12 +52,12 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_hotkeys IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_HOTKEYS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_all_default_hotkeys.
|
||||
|
||||
IF zcl_abapgit_environment=>is_merged( ) = abap_true.
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true.
|
||||
rt_hotkey_actions = get_hotkeys_from_local_intf( io_page ).
|
||||
ELSE.
|
||||
rt_hotkey_actions = get_hotkeys_from_global_intf( io_page ).
|
||||
|
@ -70,14 +71,6 @@ CLASS zcl_abapgit_hotkeys IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD should_show_hint.
|
||||
IF gv_hint_was_shown = abap_false.
|
||||
rv_yes = abap_true.
|
||||
gv_hint_was_shown = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_hotkeys_from_global_intf.
|
||||
|
||||
DATA: lt_hotkey_actions TYPE zif_abapgit_gui_page_hotkey=>tty_hotkey_with_name,
|
||||
|
@ -185,4 +178,11 @@ CLASS zcl_abapgit_hotkeys IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD should_show_hint.
|
||||
IF gv_hint_was_shown = abap_false.
|
||||
rv_yes = abap_true.
|
||||
gv_hint_was_shown = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,25 +1,17 @@
|
|||
CLASS zcl_abapgit_environment DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
FINAL
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_factory .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS is_sap_cloud_platform
|
||||
RETURNING
|
||||
VALUE(rv_cloud) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS is_merged
|
||||
RETURNING
|
||||
VALUE(rv_is_merged) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS is_repo_object_changes_allowed
|
||||
RETURNING VALUE(rv_allowed) TYPE abap_bool.
|
||||
INTERFACES zif_abapgit_environment .
|
||||
PROTECTED SECTION.
|
||||
|
||||
CLASS-DATA gv_cloud TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
|
||||
CLASS-DATA gv_is_merged TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
|
||||
CLASS-DATA gv_client_modifiable TYPE abap_bool VALUE abap_undefined.
|
||||
PRIVATE SECTION.
|
||||
DATA mv_cloud TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
|
||||
DATA mv_is_merged TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
|
||||
DATA mv_client_modifiable TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -27,56 +19,71 @@ ENDCLASS.
|
|||
CLASS ZCL_ABAPGIT_ENVIRONMENT IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD is_merged.
|
||||
|
||||
DATA lo_marker TYPE REF TO data ##NEEDED.
|
||||
|
||||
IF gv_is_merged = abap_undefined.
|
||||
TRY.
|
||||
CREATE DATA lo_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER') ##no_text.
|
||||
"No exception --> marker found
|
||||
gv_is_merged = abap_true.
|
||||
|
||||
CATCH cx_sy_create_data_error.
|
||||
gv_is_merged = abap_false.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
rv_is_merged = gv_is_merged.
|
||||
|
||||
METHOD zif_abapgit_environment~compare_with_inactive.
|
||||
rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_repo_object_changes_allowed.
|
||||
METHOD zif_abapgit_environment~is_merged.
|
||||
DATA lo_marker TYPE REF TO data ##NEEDED.
|
||||
|
||||
IF mv_is_merged = abap_undefined.
|
||||
TRY.
|
||||
CREATE DATA lo_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER') ##no_text.
|
||||
"No exception --> marker found
|
||||
mv_is_merged = abap_true.
|
||||
|
||||
CATCH cx_sy_create_data_error.
|
||||
mv_is_merged = abap_false.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
rv_result = mv_is_merged.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_environment~is_repo_object_changes_allowed.
|
||||
DATA lv_ind TYPE t000-ccnocliind.
|
||||
|
||||
IF gv_client_modifiable = abap_undefined.
|
||||
IF mv_client_modifiable = abap_undefined.
|
||||
SELECT SINGLE ccnocliind FROM t000 INTO lv_ind
|
||||
WHERE mandt = sy-mandt.
|
||||
IF sy-subrc = 0
|
||||
AND ( lv_ind = ' ' OR lv_ind = '1' ). "check changes allowed
|
||||
gv_client_modifiable = abap_true.
|
||||
mv_client_modifiable = abap_true.
|
||||
ELSE.
|
||||
gv_client_modifiable = abap_false.
|
||||
mv_client_modifiable = abap_false.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
rv_allowed = gv_client_modifiable.
|
||||
rv_result = mv_client_modifiable.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_sap_cloud_platform.
|
||||
METHOD zif_abapgit_environment~is_restart_required.
|
||||
" This method will be used in the context of SAP Cloud Platform:
|
||||
" Pull/Push operations are executed in background jobs.
|
||||
" In case of the respective application server needs to be restarted,
|
||||
" it is required to terminae the background job and reschedule again.
|
||||
rv_result = abap_false.
|
||||
TRY.
|
||||
CALL METHOD ('CL_APJ_SCP_TOOLS')=>('IS_RESTART_REQUIRED')
|
||||
RECEIVING
|
||||
restart_required = rv_result.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
rv_result = abap_false.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
IF gv_cloud = abap_undefined.
|
||||
|
||||
METHOD zif_abapgit_environment~is_sap_cloud_platform.
|
||||
IF mv_cloud = abap_undefined.
|
||||
TRY.
|
||||
CALL METHOD ('CL_COS_UTILITIES')=>('IS_SAP_CLOUD_PLATFORM')
|
||||
RECEIVING
|
||||
rv_is_sap_cloud_platform = gv_cloud.
|
||||
rv_is_sap_cloud_platform = mv_cloud.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
gv_cloud = abap_false.
|
||||
mv_cloud = abap_false.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
rv_cloud = gv_cloud.
|
||||
|
||||
rv_result = mv_cloud.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
CLASS ltcl_test DEFINITION DEFERRED.
|
||||
CLASS zcl_abapgit_environment DEFINITION LOCAL FRIENDS ltcl_test.
|
||||
|
||||
CLASS ltcl_test DEFINITION FOR TESTING
|
||||
DURATION SHORT
|
||||
|
@ -5,7 +7,7 @@ CLASS ltcl_test DEFINITION FOR TESTING
|
|||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mo_cut TYPE REF TO zcl_abapgit_environment.
|
||||
mi_cut TYPE REF TO zif_abapgit_environment.
|
||||
|
||||
METHODS:
|
||||
setup,
|
||||
|
@ -17,13 +19,13 @@ CLASS ltcl_test IMPLEMENTATION.
|
|||
|
||||
METHOD setup.
|
||||
|
||||
CREATE OBJECT mo_cut.
|
||||
CREATE OBJECT mi_cut TYPE zcl_abapgit_environment.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_cloud.
|
||||
|
||||
mo_cut->is_sap_cloud_platform( ).
|
||||
mi_cut->is_sap_cloud_platform( ).
|
||||
* no assertions, just make sure the dynamic code runs
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
CLASS zcl_abapgit_factory DEFINITION
|
||||
PUBLIC
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_injector .
|
||||
|
||||
GLOBAL FRIENDS zcl_abapgit_injector.
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS get_tadir
|
||||
RETURNING
|
||||
VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir .
|
||||
|
@ -33,6 +31,9 @@ CLASS zcl_abapgit_factory DEFINITION
|
|||
CLASS-METHODS get_cts_api
|
||||
RETURNING
|
||||
VALUE(ri_cts_api) TYPE REF TO zif_abapgit_cts_api .
|
||||
CLASS-METHODS get_environment
|
||||
RETURNING
|
||||
VALUE(ro_environment) TYPE REF TO zif_abapgit_environment .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -43,7 +44,7 @@ CLASS zcl_abapgit_factory DEFINITION
|
|||
END OF ty_sap_package .
|
||||
TYPES:
|
||||
tty_sap_package TYPE HASHED TABLE OF ty_sap_package
|
||||
WITH UNIQUE KEY package .
|
||||
WITH UNIQUE KEY package .
|
||||
TYPES:
|
||||
BEGIN OF ty_code_inspector,
|
||||
package TYPE devclass,
|
||||
|
@ -51,13 +52,14 @@ CLASS zcl_abapgit_factory DEFINITION
|
|||
END OF ty_code_inspector .
|
||||
TYPES:
|
||||
tty_code_inspector TYPE HASHED TABLE OF ty_code_inspector
|
||||
WITH UNIQUE KEY package .
|
||||
WITH UNIQUE KEY package .
|
||||
|
||||
CLASS-DATA gi_tadir TYPE REF TO zif_abapgit_tadir .
|
||||
CLASS-DATA gt_sap_package TYPE tty_sap_package .
|
||||
CLASS-DATA gt_code_inspector TYPE tty_code_inspector .
|
||||
CLASS-DATA gi_stage_logic TYPE REF TO zif_abapgit_stage_logic .
|
||||
CLASS-DATA gi_cts_api TYPE REF TO zif_abapgit_cts_api .
|
||||
CLASS-DATA go_environment TYPE REF TO zif_abapgit_environment .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -109,6 +111,14 @@ CLASS ZCL_ABAPGIT_FACTORY IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_environment.
|
||||
IF go_environment IS NOT BOUND.
|
||||
CREATE OBJECT go_environment TYPE zcl_abapgit_environment.
|
||||
ENDIF.
|
||||
ro_environment = go_environment.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_sap_package.
|
||||
|
||||
DATA: ls_sap_package TYPE ty_sap_package.
|
||||
|
|
|
@ -22,6 +22,9 @@ CLASS zcl_abapgit_injector DEFINITION
|
|||
CLASS-METHODS set_cts_api
|
||||
IMPORTING
|
||||
!ii_cts_api TYPE REF TO zif_abapgit_cts_api .
|
||||
CLASS-METHODS set_environment
|
||||
IMPORTING
|
||||
!io_environment TYPE REF TO zif_abapgit_environment .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
@ -59,6 +62,11 @@ CLASS ZCL_ABAPGIT_INJECTOR IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_environment.
|
||||
zcl_abapgit_factory=>go_environment = io_environment.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_sap_package.
|
||||
|
||||
DATA: ls_sap_package TYPE zcl_abapgit_factory=>ty_sap_package.
|
||||
|
@ -90,8 +98,6 @@ CLASS ZCL_ABAPGIT_INJECTOR IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD set_tadir.
|
||||
|
||||
zcl_abapgit_factory=>gi_tadir = ii_tadir.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -83,7 +83,7 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
|
|||
|
||||
lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ).
|
||||
|
||||
IF zcl_abapgit_environment=>is_merged( ) = abap_true
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true
|
||||
OR lo_settings->get_parallel_proc_disabled( ) = abap_true.
|
||||
gv_max_threads = 1.
|
||||
ENDIF.
|
||||
|
|
18
src/zif_abapgit_environment.intf.abap
Normal file
18
src/zif_abapgit_environment.intf.abap
Normal file
|
@ -0,0 +1,18 @@
|
|||
INTERFACE zif_abapgit_environment
|
||||
PUBLIC.
|
||||
METHODS is_sap_cloud_platform
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS is_merged
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS is_repo_object_changes_allowed
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS compare_with_inactive
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS is_restart_required
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
ENDINTERFACE.
|
15
src/zif_abapgit_environment.intf.xml
Normal file
15
src/zif_abapgit_environment.intf.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOINTERF>
|
||||
<CLSNAME>ZIF_ABAPGIT_ENVIRONMENT</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit Environment</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOINTERF>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user