Refactor background to use log object instead of WRITE (#1753)

* LOG: extra ADD_* methods

Methods ADD_ERROR, ADD_INFO, and ADD_WARNING added to log class

* refactor background to use log object

refactor background to use log object instead of WRITE
This commit is contained in:
Lars Hvam 2018-08-05 08:08:41 +02:00 committed by GitHub
parent bca3fd6002
commit c72d04ea80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 132 additions and 64 deletions

View File

@ -74,6 +74,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
lo_repo TYPE REF TO zcl_abapgit_repo_online,
lt_list TYPE zcl_abapgit_persist_background=>tt_background,
li_background TYPE REF TO zif_abapgit_background,
lo_log TYPE REF TO zcl_abapgit_log,
lv_repo_name TYPE string.
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
@ -108,11 +109,15 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
iv_username = <ls_list>-username
iv_password = <ls_list>-password ).
CREATE OBJECT lo_log.
CREATE OBJECT li_background TYPE (<ls_list>-method).
li_background->run(
io_repo = lo_repo
io_log = lo_log
it_settings = <ls_list>-settings ).
lo_log->write( ).
ENDLOOP.
IF lines( lt_list ) = 0.

View File

@ -8,6 +8,8 @@ CLASS zcl_abapgit_background_push_au DEFINITION
INTERFACES zif_abapgit_background .
PROTECTED SECTION.
DATA mo_log TYPE REF TO zcl_abapgit_log .
METHODS build_comment
IMPORTING
!is_files TYPE zif_abapgit_definitions=>ty_stage_files
@ -142,10 +144,10 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_AU IMPLEMENTATION.
changed_by = lv_changed_by
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
WRITE: / 'stage' ##NO_TEXT,
ls_comment-committer-name,
<ls_local>-file-path,
<ls_local>-file-filename.
mo_log->add_info( |stage: {
ls_comment-committer-name } {
<ls_local>-file-path } {
<ls_local>-file-filename }| ).
lo_stage->add( iv_path = <ls_local>-file-path
iv_filename = <ls_local>-file-filename
@ -157,9 +159,9 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_AU IMPLEMENTATION.
WHERE filename = <ls_local>-file-filename
AND path <> <ls_local>-file-path
AND filename <> 'package.devc.xml'.
WRITE: / 'rm' ##NO_TEXT,
<ls_remote>-path,
<ls_remote>-filename.
mo_log->add_info( |rm: {
<ls_remote>-path } {
<ls_remote>-filename }| ).
* rm old file when object has moved
lo_stage->rm(
@ -200,9 +202,9 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_AU IMPLEMENTATION.
LOOP AT is_files-remote ASSIGNING <ls_remote>.
WRITE: / 'removed' ##NO_TEXT,
<ls_remote>-path,
<ls_remote>-filename.
mo_log->add_info( |removed: {
<ls_remote>-path } {
<ls_remote>-filename }| ).
lo_stage->rm( iv_path = <ls_remote>-path
iv_filename = <ls_remote>-filename ).
@ -237,10 +239,11 @@ 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 ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
WRITE: / 'Nothing to stage' ##NO_TEXT.
io_log->add_info( 'Nothing to stage' ) ##NO_TEXT.
RETURN.
ENDIF.

View File

@ -8,10 +8,12 @@ CLASS zcl_abapgit_background_push_fi DEFINITION
INTERFACES zif_abapgit_background .
PROTECTED SECTION.
CONSTANTS: BEGIN OF gc_settings,
CONSTANTS:
BEGIN OF gc_settings,
name TYPE string VALUE 'NAME',
email TYPE string VALUE 'EMAIL',
END OF gc_settings .
DATA mo_log TYPE REF TO zcl_abapgit_log .
METHODS build_comment
IMPORTING
@ -81,9 +83,9 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_FI IMPLEMENTATION.
iv_branch_sha1 = io_repo->get_sha1_remote( ).
LOOP AT ls_files-local ASSIGNING <ls_local>.
WRITE: / 'stage' ##NO_TEXT,
<ls_local>-file-path,
<ls_local>-file-filename.
mo_log->add_info( |stage: {
<ls_local>-file-path } {
<ls_local>-file-filename }| ).
lo_stage->add( iv_path = <ls_local>-file-path
iv_filename = <ls_local>-file-filename
iv_data = <ls_local>-file-data ).
@ -91,9 +93,9 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_FI IMPLEMENTATION.
LOOP AT ls_files-remote ASSIGNING <ls_remote>.
WRITE: / 'removed' ##NO_TEXT,
<ls_remote>-path,
<ls_remote>-filename.
mo_log->add_info( |removed: {
<ls_remote>-path } {
<ls_remote>-filename }| ).
lo_stage->rm( iv_path = <ls_remote>-path
iv_filename = <ls_remote>-filename ).
@ -146,11 +148,11 @@ CLASS ZCL_ABAPGIT_BACKGROUND_PUSH_FI IMPLEMENTATION.
lv_name TYPE string,
lv_email TYPE string.
mo_log = io_log.
ls_files = zcl_abapgit_stage_logic=>get( io_repo ).
IF lines( ls_files-local ) = 0 AND lines( ls_files-remote ) = 0.
WRITE: / 'Nothing to stage' ##NO_TEXT.
io_log->add_info( 'Nothing to stage' ).
RETURN.
ENDIF.

View File

@ -1,12 +1,14 @@
INTERFACE zif_abapgit_background
PUBLIC .
TYPES: BEGIN OF ty_settings,
TYPES:
BEGIN OF ty_settings,
key TYPE string,
value TYPE string,
END OF ty_settings .
TYPES: ty_settings_tt TYPE STANDARD TABLE OF ty_settings WITH DEFAULT KEY.
TYPES:
ty_settings_tt TYPE STANDARD TABLE OF ty_settings WITH DEFAULT KEY .
CLASS-METHODS get_description
RETURNING
@ -17,6 +19,7 @@ INTERFACE zif_abapgit_background
METHODS run
IMPORTING
!io_repo TYPE REF TO zcl_abapgit_repo_online
!io_log TYPE REF TO zcl_abapgit_log
!it_settings TYPE ty_settings_tt OPTIONAL
RAISING
zcx_abapgit_exception .

View File

@ -1,45 +1,62 @@
CLASS zcl_abapgit_log DEFINITION PUBLIC CREATE PUBLIC.
CLASS zcl_abapgit_log DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
add
IMPORTING
iv_msg TYPE csequence
iv_type TYPE symsgty DEFAULT 'E'
iv_rc TYPE balsort OPTIONAL,
count
RETURNING VALUE(rv_count) TYPE i,
to_html
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html,
clear,
has_rc "For unit tests mainly
IMPORTING iv_rc TYPE balsort
RETURNING VALUE(rv_yes) TYPE abap_bool,
show
IMPORTING
iv_header_text TYPE csequence DEFAULT 'Log'.
PRIVATE SECTION.
TYPES: BEGIN OF ty_log,
METHODS add
IMPORTING
!iv_msg TYPE csequence
!iv_type TYPE symsgty DEFAULT 'E'
!iv_rc TYPE balsort OPTIONAL .
METHODS add_error
IMPORTING
!iv_msg TYPE csequence .
METHODS add_info
IMPORTING
!iv_msg TYPE csequence .
METHODS add_warning
IMPORTING
!iv_msg TYPE csequence .
METHODS clear .
METHODS count
RETURNING
VALUE(rv_count) TYPE i .
METHODS has_rc
IMPORTING
!iv_rc TYPE balsort
RETURNING
VALUE(rv_yes) TYPE abap_bool .
METHODS show
IMPORTING
!iv_header_text TYPE csequence DEFAULT 'Log' .
METHODS to_html
RETURNING
VALUE(ro_html) TYPE REF TO zcl_abapgit_html .
METHODS write .
PROTECTED SECTION.
TYPES:
BEGIN OF ty_log,
msg TYPE string,
type TYPE symsgty,
rc TYPE balsort,
END OF ty_log,
END OF ty_log .
TYPES:
BEGIN OF ty_log_out,
type TYPE icon_d,
msg TYPE string,
END OF ty_log_out,
END OF ty_log_out .
TYPES:
tty_log_out TYPE STANDARD TABLE OF ty_log_out
WITH NON-UNIQUE DEFAULT KEY .
DATA:
mt_log TYPE STANDARD TABLE OF ty_log WITH DEFAULT KEY .
DATA: mt_log TYPE STANDARD TABLE OF ty_log WITH DEFAULT KEY.
METHODS:
prepare_log_for_display
METHODS prepare_log_for_display
RETURNING
VALUE(rt_log_out) TYPE zcl_abapgit_log=>tty_log_out .
ENDCLASS.
@ -59,6 +76,30 @@ CLASS ZCL_ABAPGIT_LOG IMPLEMENTATION.
ENDMETHOD.
METHOD add_error.
add( iv_msg = iv_msg
iv_type = 'E' ).
ENDMETHOD.
METHOD add_info.
add( iv_msg = iv_msg
iv_type = 'I' ).
ENDMETHOD.
METHOD add_warning.
add( iv_msg = iv_msg
iv_type = 'W' ).
ENDMETHOD.
METHOD clear.
CLEAR mt_log.
ENDMETHOD.
@ -70,6 +111,8 @@ CLASS ZCL_ABAPGIT_LOG IMPLEMENTATION.
METHOD has_rc.
* todo, this method is only used in unit tests
READ TABLE mt_log WITH KEY rc = iv_rc TRANSPORTING NO FIELDS.
rv_yes = boolc( sy-subrc = 0 ).
ENDMETHOD.
@ -190,4 +233,16 @@ CLASS ZCL_ABAPGIT_LOG IMPLEMENTATION.
ENDLOOP.
ENDMETHOD.
METHOD write.
DATA: ls_log LIKE LINE OF mt_log.
LOOP AT mt_log INTO ls_log.
WRITE: / |{ ls_log-type }: { ls_log-msg }|.
ENDLOOP.
ENDMETHOD.
ENDCLASS.