diff --git a/src/background/zcl_abapgit_background_push_au.clas.abap b/src/background/zcl_abapgit_background_push_au.clas.abap index fbd80dc03..5fa48d7b9 100644 --- a/src/background/zcl_abapgit_background_push_au.clas.abap +++ b/src/background/zcl_abapgit_background_push_au.clas.abap @@ -110,7 +110,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_AU IMPLEMENTATION. LIKE LINE OF ls_files-local. - ls_files = zcl_abapgit_stage_logic=>get( io_repo ). + ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ). LOOP AT ls_files-local ASSIGNING . lv_changed_by = zcl_abapgit_objects=>changed_by( -item ). @@ -234,7 +234,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_AU IMPLEMENTATION. DATA: ls_files TYPE zif_abapgit_definitions=>ty_stage_files. mo_log = io_log. - ls_files = zcl_abapgit_stage_logic=>get( io_repo ). + ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ). IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0. io_log->add_info( 'Nothing to stage' ) ##NO_TEXT. diff --git a/src/background/zcl_abapgit_background_push_fi.clas.abap b/src/background/zcl_abapgit_background_push_fi.clas.abap index bec4286ca..96971a141 100644 --- a/src/background/zcl_abapgit_background_push_fi.clas.abap +++ b/src/background/zcl_abapgit_background_push_fi.clas.abap @@ -73,7 +73,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_FI IMPLEMENTATION. LIKE LINE OF ls_files-remote. - ls_files = zcl_abapgit_stage_logic=>get( io_repo ). + ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ). ASSERT lines( ls_files-local ) > 0 OR lines( ls_files-remote ) > 0. @@ -146,7 +146,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_FI IMPLEMENTATION. lv_email TYPE string. mo_log = io_log. - ls_files = zcl_abapgit_stage_logic=>get( io_repo ). + ls_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo ). IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0. io_log->add_info( 'Nothing to stage' ). diff --git a/src/ui/zcl_abapgit_gui_page_stage.clas.abap b/src/ui/zcl_abapgit_gui_page_stage.clas.abap index 0b08686c5..74535516e 100644 --- a/src/ui/zcl_abapgit_gui_page_stage.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_stage.clas.abap @@ -77,7 +77,7 @@ ENDCLASS. -CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GUI_PAGE_STAGE IMPLEMENTATION. METHOD build_menu. @@ -100,7 +100,7 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. ms_control-page_title = 'STAGE'. mo_repo = io_repo. - ms_files = zcl_abapgit_stage_logic=>get( mo_repo ). + ms_files = zcl_abapgit_factory=>get_stage_logic( )->get( mo_repo ). mv_seed = iv_seed. IF mv_seed IS INITIAL. " Generate based on time unless obtained from diff page @@ -136,6 +136,35 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. ENDMETHOD. + METHOD get_page_patch. + + DATA: lo_page TYPE REF TO zcl_abapgit_gui_page_diff, + lv_key TYPE zif_abapgit_persistence=>ty_repo-key, + ls_file TYPE zif_abapgit_definitions=>ty_file, + ls_object TYPE zif_abapgit_definitions=>ty_item, + lo_stage TYPE REF TO zcl_abapgit_stage. + + zcl_abapgit_html_action_utils=>file_obj_decode( + EXPORTING + iv_string = iv_getdata + IMPORTING + ev_key = lv_key + eg_file = ls_file + eg_object = ls_object ). + + CREATE OBJECT lo_stage. + + CREATE OBJECT lo_page + EXPORTING + iv_key = lv_key + iv_patch_mode = abap_true + io_stage = lo_stage. + + ri_page = lo_page. + + ENDMETHOD. + + METHOD process_stage_list. DATA: lv_string TYPE string, @@ -464,35 +493,4 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. ENDCASE. ENDMETHOD. - - - METHOD get_page_patch. - - DATA: lo_page TYPE REF TO zcl_abapgit_gui_page_diff, - lv_key TYPE zif_abapgit_persistence=>ty_repo-key, - ls_file TYPE zif_abapgit_definitions=>ty_file, - ls_object TYPE zif_abapgit_definitions=>ty_item, - lo_stage TYPE REF TO zcl_abapgit_stage. - - zcl_abapgit_html_action_utils=>file_obj_decode( - EXPORTING - iv_string = iv_getdata - IMPORTING - ev_key = lv_key - eg_file = ls_file - eg_object = ls_object ). - - CREATE OBJECT lo_stage. - - CREATE OBJECT lo_page - EXPORTING - iv_key = lv_key - iv_patch_mode = abap_true - io_stage = lo_stage. - - ri_page = lo_page. - - ENDMETHOD. - - ENDCLASS. diff --git a/src/zcl_abapgit_factory.clas.abap b/src/zcl_abapgit_factory.clas.abap index 272605f02..a0d3f92f8 100644 --- a/src/zcl_abapgit_factory.clas.abap +++ b/src/zcl_abapgit_factory.clas.abap @@ -1,124 +1,107 @@ 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, - - get_sap_package - IMPORTING - iv_package TYPE devclass - RETURNING - VALUE(ri_sap_package) TYPE REF TO zif_abapgit_sap_package, - - get_code_inspector - IMPORTING - iv_package TYPE devclass - iv_check_variant_name TYPE sci_chkv - RETURNING - VALUE(ri_code_inspector) TYPE REF TO zif_abapgit_code_inspector - RAISING - zcx_abapgit_exception, - - get_syntax_check - IMPORTING - iv_package TYPE devclass - RETURNING - VALUE(ri_syntax_check) TYPE REF TO zif_abapgit_code_inspector - RAISING - zcx_abapgit_exception, - - get_branch_overview - IMPORTING - io_repo TYPE REF TO zcl_abapgit_repo_online - RETURNING - VALUE(ri_branch_overview) TYPE REF TO zif_abapgit_branch_overview - RAISING - zcx_abapgit_exception. - - + CLASS-METHODS get_tadir + RETURNING + VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir . + CLASS-METHODS get_sap_package + IMPORTING + !iv_package TYPE devclass + RETURNING + VALUE(ri_sap_package) TYPE REF TO zif_abapgit_sap_package . + CLASS-METHODS get_code_inspector + IMPORTING + !iv_package TYPE devclass + !iv_check_variant_name TYPE sci_chkv + RETURNING + VALUE(ri_code_inspector) TYPE REF TO zif_abapgit_code_inspector + RAISING + zcx_abapgit_exception . + CLASS-METHODS get_syntax_check + IMPORTING + !iv_package TYPE devclass + RETURNING + VALUE(ri_syntax_check) TYPE REF TO zif_abapgit_code_inspector + RAISING + zcx_abapgit_exception . + CLASS-METHODS get_branch_overview + IMPORTING + !io_repo TYPE REF TO zcl_abapgit_repo_online + RETURNING + VALUE(ri_branch_overview) TYPE REF TO zif_abapgit_branch_overview + RAISING + zcx_abapgit_exception . + CLASS-METHODS get_stage_logic + RETURNING + VALUE(ri_logic) TYPE REF TO zif_abapgit_stage_logic . PRIVATE SECTION. + TYPES: BEGIN OF ty_sap_package, package TYPE devclass, instance TYPE REF TO zif_abapgit_sap_package, - END OF ty_sap_package, + 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, check_variant_name TYPE sci_chkv, instance TYPE REF TO zif_abapgit_code_inspector, - END OF ty_code_inspector, + END OF ty_code_inspector . + TYPES: tty_code_inspector TYPE HASHED TABLE OF ty_code_inspector - WITH UNIQUE KEY package check_variant_name, + WITH UNIQUE KEY package check_variant_name . + TYPES: BEGIN OF ty_syntax_check, package TYPE devclass, instance TYPE REF TO zif_abapgit_code_inspector, - END OF ty_syntax_check, + END OF ty_syntax_check . + TYPES: tty_syntax_check TYPE HASHED TABLE OF ty_syntax_check - WITH UNIQUE KEY package, - + WITH UNIQUE KEY package . + TYPES: BEGIN OF ty_branch_overview, repo_key TYPE zif_abapgit_persistence=>ty_value, instance TYPE REF TO zif_abapgit_branch_overview, - END OF ty_branch_overview, + END OF ty_branch_overview . + TYPES: tty_branch_overview TYPE HASHED TABLE OF ty_branch_overview - WITH UNIQUE KEY repo_key. - - CLASS-DATA: - gi_tadir TYPE REF TO zif_abapgit_tadir, - gt_sap_package TYPE tty_sap_package, - gt_code_inspector TYPE tty_code_inspector, - gt_syntax_check TYPE tty_syntax_check, - gi_branch_overview TYPE REF TO zif_abapgit_branch_overview. + WITH UNIQUE KEY repo_key . + 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 gt_syntax_check TYPE tty_syntax_check . + CLASS-DATA gi_branch_overview TYPE REF TO zif_abapgit_branch_overview . + CLASS-DATA gi_stage_logic TYPE REF TO zif_abapgit_stage_logic . ENDCLASS. -CLASS zcl_abapgit_factory IMPLEMENTATION. +CLASS ZCL_ABAPGIT_FACTORY IMPLEMENTATION. - METHOD get_tadir. - IF gi_tadir IS INITIAL. - CREATE OBJECT gi_tadir TYPE zcl_abapgit_tadir. - ENDIF. + METHOD get_branch_overview. - ri_tadir = gi_tadir. - - ENDMETHOD. - - METHOD get_sap_package. - - DATA: ls_sap_package TYPE ty_sap_package. - FIELD-SYMBOLS: TYPE ty_sap_package. - - READ TABLE gt_sap_package ASSIGNING - WITH TABLE KEY package = iv_package. - IF sy-subrc <> 0. - - ls_sap_package-package = iv_package. - CREATE OBJECT ls_sap_package-instance TYPE zcl_abapgit_sap_package + IF gi_branch_overview IS INITIAL. + CREATE OBJECT gi_branch_overview + TYPE zcl_abapgit_branch_overview EXPORTING - iv_package = iv_package. - - INSERT ls_sap_package - INTO TABLE gt_sap_package - ASSIGNING . - + io_repo = io_repo. ENDIF. - ri_sap_package = -instance. + ri_branch_overview = gi_branch_overview. ENDMETHOD. + METHOD get_code_inspector. DATA: ls_code_inspector LIKE LINE OF gt_code_inspector. @@ -146,6 +129,44 @@ CLASS zcl_abapgit_factory IMPLEMENTATION. ENDMETHOD. + + METHOD get_sap_package. + + DATA: ls_sap_package TYPE ty_sap_package. + FIELD-SYMBOLS: TYPE ty_sap_package. + + READ TABLE gt_sap_package ASSIGNING + WITH TABLE KEY package = iv_package. + IF sy-subrc <> 0. + + ls_sap_package-package = iv_package. + CREATE OBJECT ls_sap_package-instance TYPE zcl_abapgit_sap_package + EXPORTING + iv_package = iv_package. + + INSERT ls_sap_package + INTO TABLE gt_sap_package + ASSIGNING . + + ENDIF. + + ri_sap_package = -instance. + + ENDMETHOD. + + + METHOD get_stage_logic. + + IF gi_stage_logic IS INITIAL. + CREATE OBJECT gi_stage_logic + TYPE zcl_abapgit_stage_logic. + ENDIF. + + ri_logic = gi_stage_logic. + + ENDMETHOD. + + METHOD get_syntax_check. DATA: ls_syntax_check LIKE LINE OF gt_syntax_check. @@ -170,14 +191,14 @@ CLASS zcl_abapgit_factory IMPLEMENTATION. ENDMETHOD. - METHOD get_branch_overview. - CREATE OBJECT ri_branch_overview - TYPE zcl_abapgit_branch_overview - EXPORTING - io_repo = io_repo. + METHOD get_tadir. + IF gi_tadir IS INITIAL. + CREATE OBJECT gi_tadir TYPE zcl_abapgit_tadir. + ENDIF. + + ri_tadir = gi_tadir. ENDMETHOD. - ENDCLASS. diff --git a/src/zcl_abapgit_injector.clas.abap b/src/zcl_abapgit_injector.clas.abap index 85e5216b3..09ca4b5f4 100644 --- a/src/zcl_abapgit_injector.clas.abap +++ b/src/zcl_abapgit_injector.clas.abap @@ -5,60 +5,32 @@ CLASS zcl_abapgit_injector DEFINITION PUBLIC SECTION. - CLASS-METHODS: - set_tadir - IMPORTING - !ii_tadir TYPE REF TO zif_abapgit_tadir, - - set_sap_package - IMPORTING - iv_package TYPE devclass - ii_sap_package TYPE REF TO zif_abapgit_sap_package, - - set_code_inspector - IMPORTING - iv_package TYPE devclass - iv_check_variant_name TYPE sci_chkv OPTIONAL - ii_code_inspector TYPE REF TO zif_abapgit_code_inspector, - - set_syntax_check - IMPORTING - iv_package TYPE devclass - ii_syntax_check TYPE REF TO zif_abapgit_code_inspector. - + CLASS-METHODS set_tadir + IMPORTING + !ii_tadir TYPE REF TO zif_abapgit_tadir . + CLASS-METHODS set_sap_package + IMPORTING + !iv_package TYPE devclass + !ii_sap_package TYPE REF TO zif_abapgit_sap_package . + CLASS-METHODS set_code_inspector + IMPORTING + !iv_package TYPE devclass + !iv_check_variant_name TYPE sci_chkv OPTIONAL + !ii_code_inspector TYPE REF TO zif_abapgit_code_inspector . + CLASS-METHODS set_syntax_check + IMPORTING + !iv_package TYPE devclass + !ii_syntax_check TYPE REF TO zif_abapgit_code_inspector . + CLASS-METHODS set_stage_logic + IMPORTING + !ii_logic TYPE REF TO zif_abapgit_stage_logic . + PRIVATE SECTION. ENDCLASS. -CLASS zcl_abapgit_injector IMPLEMENTATION. +CLASS ZCL_ABAPGIT_INJECTOR IMPLEMENTATION. - METHOD set_tadir. - - zcl_abapgit_factory=>gi_tadir = ii_tadir. - - ENDMETHOD. - - METHOD set_sap_package. - - DATA: ls_sap_package TYPE zcl_abapgit_factory=>ty_sap_package. - FIELD-SYMBOLS: TYPE zcl_abapgit_factory=>ty_sap_package. - - READ TABLE zcl_abapgit_factory=>gt_sap_package - ASSIGNING - WITH TABLE KEY package = iv_package. - - IF sy-subrc <> 0. - - ls_sap_package-package = iv_package. - INSERT ls_sap_package - INTO TABLE zcl_abapgit_factory=>gt_sap_package - ASSIGNING . - - ENDIF. - - -instance = ii_sap_package. - - ENDMETHOD. METHOD set_code_inspector. @@ -84,6 +56,37 @@ CLASS zcl_abapgit_injector IMPLEMENTATION. ENDMETHOD. + + METHOD set_sap_package. + + DATA: ls_sap_package TYPE zcl_abapgit_factory=>ty_sap_package. + FIELD-SYMBOLS: TYPE zcl_abapgit_factory=>ty_sap_package. + + READ TABLE zcl_abapgit_factory=>gt_sap_package + ASSIGNING + WITH TABLE KEY package = iv_package. + + IF sy-subrc <> 0. + + ls_sap_package-package = iv_package. + INSERT ls_sap_package + INTO TABLE zcl_abapgit_factory=>gt_sap_package + ASSIGNING . + + ENDIF. + + -instance = ii_sap_package. + + ENDMETHOD. + + + METHOD set_stage_logic. + + zcl_abapgit_factory=>gi_stage_logic = ii_logic. + + ENDMETHOD. + + METHOD set_syntax_check. DATA: ls_syntax_check LIKE LINE OF zcl_abapgit_factory=>gt_syntax_check. @@ -106,4 +109,10 @@ CLASS zcl_abapgit_injector IMPLEMENTATION. ENDMETHOD. + + METHOD set_tadir. + + zcl_abapgit_factory=>gi_tadir = ii_tadir. + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_abapgit_stage_logic.clas.abap b/src/zcl_abapgit_stage_logic.clas.abap index 41f14d10d..80aabd2a4 100644 --- a/src/zcl_abapgit_stage_logic.clas.abap +++ b/src/zcl_abapgit_stage_logic.clas.abap @@ -1,17 +1,12 @@ CLASS zcl_abapgit_stage_logic DEFINITION PUBLIC - FINAL - CREATE PUBLIC . + CREATE PRIVATE + + GLOBAL FRIENDS zcl_abapgit_factory . PUBLIC SECTION. - CLASS-METHODS get - IMPORTING - !io_repo TYPE REF TO zcl_abapgit_repo_online - RETURNING - VALUE(rs_files) TYPE zif_abapgit_definitions=>ty_stage_files - RAISING - zcx_abapgit_exception . + INTERFACES zif_abapgit_stage_logic . PRIVATE SECTION. CLASS-METHODS: remove_ignored @@ -27,17 +22,6 @@ ENDCLASS. CLASS ZCL_ABAPGIT_STAGE_LOGIC IMPLEMENTATION. - METHOD get. - - rs_files-local = io_repo->get_files_local( ). - rs_files-remote = io_repo->get_files_remote( ). - remove_identical( CHANGING cs_files = rs_files ). - remove_ignored( EXPORTING io_repo = io_repo - CHANGING cs_files = rs_files ). - - ENDMETHOD. - - METHOD remove_identical. DATA: lv_index TYPE i, @@ -87,4 +71,15 @@ CLASS ZCL_ABAPGIT_STAGE_LOGIC IMPLEMENTATION. ENDLOOP. ENDMETHOD. + + + METHOD zif_abapgit_stage_logic~get. + + rs_files-local = io_repo->get_files_local( ). + rs_files-remote = io_repo->get_files_remote( ). + remove_identical( CHANGING cs_files = rs_files ). + remove_ignored( EXPORTING io_repo = io_repo + CHANGING cs_files = rs_files ). + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_abapgit_stage_logic.clas.xml b/src/zcl_abapgit_stage_logic.clas.xml index e7ad0dc89..24b8f69d7 100644 --- a/src/zcl_abapgit_stage_logic.clas.xml +++ b/src/zcl_abapgit_stage_logic.clas.xml @@ -7,9 +7,7 @@ 1 E Stage logic - 2 1 - X X X X diff --git a/src/zcl_abapgit_transport_2_branch.clas.abap b/src/zcl_abapgit_transport_2_branch.clas.abap index eccb85072..a186d4530 100644 --- a/src/zcl_abapgit_transport_2_branch.clas.abap +++ b/src/zcl_abapgit_transport_2_branch.clas.abap @@ -50,7 +50,7 @@ CLASS ZCL_ABAPGIT_TRANSPORT_2_BRANCH IMPLEMENTATION. CREATE OBJECT lo_stage. - ls_stage_objects = zcl_abapgit_stage_logic=>get( io_repository ). + ls_stage_objects = zcl_abapgit_factory=>get_stage_logic( )->get( io_repository ). lt_object_statuses = io_repository->status( ). diff --git a/src/zif_abapgit_stage_logic.intf.abap b/src/zif_abapgit_stage_logic.intf.abap new file mode 100644 index 000000000..68451c282 --- /dev/null +++ b/src/zif_abapgit_stage_logic.intf.abap @@ -0,0 +1,12 @@ +INTERFACE zif_abapgit_stage_logic + PUBLIC . + + METHODS get + IMPORTING + !io_repo TYPE REF TO zcl_abapgit_repo_online + RETURNING + VALUE(rs_files) TYPE zif_abapgit_definitions=>ty_stage_files + RAISING + zcx_abapgit_exception . + +ENDINTERFACE. diff --git a/src/zif_abapgit_stage_logic.intf.xml b/src/zif_abapgit_stage_logic.intf.xml new file mode 100644 index 000000000..3dc533e6d --- /dev/null +++ b/src/zif_abapgit_stage_logic.intf.xml @@ -0,0 +1,16 @@ + + + + + + ZIF_ABAPGIT_STAGE_LOGIC + 1 + E + Staging logic + 2 + 1 + X + + + +