interface for zcl_abapgit_stage_logic #1955 (#1956)

* interface for zcl_abapgit_stage_logic #1955

* factory, fix injection
This commit is contained in:
Lars Hvam 2018-09-27 15:03:29 +02:00 committed by GitHub
parent ba787d373e
commit 10ea325ca8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 246 additions and 197 deletions

View File

@ -110,7 +110,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_AU IMPLEMENTATION.
<ls_local> 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 <ls_local>.
lv_changed_by = zcl_abapgit_objects=>changed_by( <ls_local>-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.

View File

@ -73,7 +73,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_FI IMPLEMENTATION.
<ls_remote> 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' ).

View File

@ -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.

View File

@ -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
CLASS-METHODS get_tadir
RETURNING
VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir,
get_sap_package
VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir .
CLASS-METHODS get_sap_package
IMPORTING
iv_package TYPE devclass
!iv_package TYPE devclass
RETURNING
VALUE(ri_sap_package) TYPE REF TO zif_abapgit_sap_package,
get_code_inspector
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
!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
zcx_abapgit_exception .
CLASS-METHODS get_syntax_check
IMPORTING
iv_package TYPE devclass
!iv_package TYPE devclass
RETURNING
VALUE(ri_syntax_check) TYPE REF TO zif_abapgit_code_inspector
RAISING
zcx_abapgit_exception,
get_branch_overview
zcx_abapgit_exception .
CLASS-METHODS get_branch_overview
IMPORTING
io_repo TYPE REF TO zcl_abapgit_repo_online
!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.
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: <ls_sap_package> TYPE ty_sap_package.
READ TABLE gt_sap_package ASSIGNING <ls_sap_package>
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 <ls_sap_package>.
io_repo = io_repo.
ENDIF.
ri_sap_package = <ls_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: <ls_sap_package> TYPE ty_sap_package.
READ TABLE gt_sap_package ASSIGNING <ls_sap_package>
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 <ls_sap_package>.
ENDIF.
ri_sap_package = <ls_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.

View File

@ -5,60 +5,32 @@ CLASS zcl_abapgit_injector DEFINITION
PUBLIC SECTION.
CLASS-METHODS:
set_tadir
CLASS-METHODS set_tadir
IMPORTING
!ii_tadir TYPE REF TO zif_abapgit_tadir,
set_sap_package
!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,
set_code_inspector
!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,
set_syntax_check
!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.
!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: <ls_sap_package> TYPE zcl_abapgit_factory=>ty_sap_package.
READ TABLE zcl_abapgit_factory=>gt_sap_package
ASSIGNING <ls_sap_package>
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 <ls_sap_package>.
ENDIF.
<ls_sap_package>-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: <ls_sap_package> TYPE zcl_abapgit_factory=>ty_sap_package.
READ TABLE zcl_abapgit_factory=>gt_sap_package
ASSIGNING <ls_sap_package>
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 <ls_sap_package>.
ENDIF.
<ls_sap_package>-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.

View File

@ -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.

View File

@ -7,9 +7,7 @@
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Stage logic</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>

View File

@ -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( ).

View File

@ -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.

View File

@ -0,0 +1,16 @@
<?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_STAGE_LOGIC</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Staging logic</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>