Add interface for ZCL_ABAPGIT_PROGRESS #2303 (#2316)

* interface for progress class

* adjust branch overview

* adjust git pack

* adjust diff page

* adjust objects class

* adjust activation class

* adjust repo online class

* adjust serialize class

few methods moved

* adjust tadir class
This commit is contained in:
Lars Hvam 2019-01-23 06:28:54 +01:00 committed by GitHub
parent 1a60384e84
commit e8b6b0020d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 108 additions and 94 deletions

View File

@ -84,6 +84,7 @@ CLASS zcl_abapgit_git_pack DEFINITION
VALUE(rv_data) TYPE xstring
RAISING
zcx_abapgit_exception .
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS:
@ -334,7 +335,7 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
METHOD decode_deltas.
DATA: ls_object LIKE LINE OF ct_objects,
lo_progress TYPE REF TO zcl_abapgit_progress,
li_progress TYPE REF TO zif_abapgit_progress,
lt_deltas LIKE ct_objects.
@ -351,12 +352,10 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
"Restore correct Delta Order
SORT lt_deltas BY index.
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( lt_deltas ).
li_progress = zcl_abapgit_progress=>get_instance( lines( lt_deltas ) ).
LOOP AT lt_deltas INTO ls_object.
lo_progress->show( iv_current = sy-tabix
li_progress->show( iv_current = sy-tabix
iv_text = 'Decode deltas' ) ##NO_TEXT.
delta( EXPORTING is_object = ls_object
@ -617,7 +616,7 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
lv_adler32 TYPE zif_abapgit_definitions=>ty_adler32,
lv_compressed TYPE xstring,
lv_xstring TYPE xstring,
lo_progress TYPE REF TO zcl_abapgit_progress,
li_progress TYPE REF TO zif_abapgit_progress,
lv_objects_total TYPE i.
FIELD-SYMBOLS: <ls_object> LIKE LINE OF it_objects.
@ -632,13 +631,11 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
lv_objects_total = lines( it_objects ).
CREATE OBJECT lo_progress
EXPORTING
iv_total = lv_objects_total.
li_progress = zcl_abapgit_progress=>get_instance( lv_objects_total ).
LOOP AT it_objects ASSIGNING <ls_object>.
IF sy-tabix MOD 200 = 0.
lo_progress->show(
li_progress->show(
iv_current = sy-tabix
iv_text = |Encoding objects ( { sy-tabix } of { lv_objects_total } )| ).
ENDIF.

View File

@ -138,26 +138,24 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
METHOD activate_new.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress.
DATA: li_progress TYPE REF TO zif_abapgit_progress.
IF gt_objects IS INITIAL.
RETURN.
ENDIF.
CREATE OBJECT lo_progress
EXPORTING
iv_total = 100.
li_progress = zcl_abapgit_progress=>get_instance( 100 ).
IF iv_ddic = abap_true.
lo_progress->show( iv_current = 98
li_progress->show( iv_current = 98
iv_text = 'Activating DDIC' ).
activate_ddic( ).
ELSE.
lo_progress->show( iv_current = 98
li_progress->show( iv_current = 98
iv_text = 'Activating non DDIC' ).
activate_old( ).
@ -299,16 +297,14 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
DATA: lv_class LIKE LINE OF gt_classes,
lo_cross TYPE REF TO cl_wb_crossreference,
lv_include TYPE programm,
lo_progress TYPE REF TO zcl_abapgit_progress.
li_progress TYPE REF TO zif_abapgit_progress.
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( gt_classes ).
li_progress = zcl_abapgit_progress=>get_instance( lines( gt_classes ) ).
LOOP AT gt_classes INTO lv_class.
IF sy-tabix MOD 20 = 0.
lo_progress->show(
li_progress->show(
iv_current = sy-tabix
iv_text = 'Updating where-used lists' ).
ENDIF.

View File

@ -617,19 +617,17 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
METHOD render_content.
DATA: ls_diff_file LIKE LINE OF mt_diff_files,
lo_progress TYPE REF TO zcl_abapgit_progress.
li_progress TYPE REF TO zif_abapgit_progress.
CREATE OBJECT ro_html.
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( mt_diff_files ).
li_progress = zcl_abapgit_progress=>get_instance( lines( mt_diff_files ) ).
ro_html->add( |<div id="diff-list" data-repo-key="{ mv_repo_key }">| ).
ro_html->add( zcl_abapgit_gui_chunk_lib=>render_js_error_banner( ) ).
LOOP AT mt_diff_files INTO ls_diff_file.
lo_progress->show(
li_progress->show(
iv_current = sy-tabix
iv_text = |Render Diff - { ls_diff_file-filename }| ).

View File

@ -1,21 +1,24 @@
CLASS zcl_abapgit_progress DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
CREATE PROTECTED .
PUBLIC SECTION.
METHODS show
INTERFACES zif_abapgit_progress .
CLASS-METHODS get_instance
IMPORTING
VALUE(iv_current) TYPE i
!iv_text TYPE csequence .
METHODS constructor
IMPORTING
!iv_total TYPE i .
!iv_total TYPE i
RETURNING
VALUE(ri_progress) TYPE REF TO zif_abapgit_progress .
PROTECTED SECTION.
DATA mv_total TYPE i .
METHODS constructor
IMPORTING
!iv_total TYPE i .
METHODS calc_pct
IMPORTING
!iv_current TYPE i
@ -53,10 +56,19 @@ CLASS ZCL_ABAPGIT_PROGRESS IMPLEMENTATION.
ENDMETHOD.
METHOD show.
METHOD get_instance.
DATA: lv_pct TYPE i.
DATA: lv_time TYPE t.
CREATE OBJECT ri_progress TYPE zcl_abapgit_progress
EXPORTING
iv_total = iv_total.
ENDMETHOD.
METHOD zif_abapgit_progress~show.
DATA: lv_pct TYPE i,
lv_time TYPE t.
CONSTANTS: lc_wait_secs TYPE i VALUE 2.

View File

@ -0,0 +1,9 @@
INTERFACE zif_abapgit_progress
PUBLIC .
METHODS show
IMPORTING
iv_current TYPE i
iv_text TYPE csequence .
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_PROGRESS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Progress indicator</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -259,7 +259,7 @@ CLASS ZCL_ABAPGIT_BRANCH_OVERVIEW IMPLEMENTATION.
METHOD get_git_objects.
DATA: lo_branch_list TYPE REF TO zcl_abapgit_git_branch_list,
lo_progress TYPE REF TO zcl_abapgit_progress,
li_progress TYPE REF TO zif_abapgit_progress,
lt_branches_and_tags TYPE zif_abapgit_definitions=>ty_git_branch_list_tt,
lt_tags TYPE zif_abapgit_definitions=>ty_git_branch_list_tt,
ls_tag LIKE LINE OF mt_tags.
@ -267,11 +267,9 @@ CLASS ZCL_ABAPGIT_BRANCH_OVERVIEW IMPLEMENTATION.
FIELD-SYMBOLS: <ls_branch> LIKE LINE OF lt_tags.
CREATE OBJECT lo_progress
EXPORTING
iv_total = 1.
li_progress = zcl_abapgit_progress=>get_instance( 1 ).
lo_progress->show(
li_progress->show(
iv_current = 1
iv_text = |Get git objects { io_repo->get_name( ) }| ) ##NO_TEXT.

View File

@ -413,7 +413,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
METHOD delete.
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
lo_progress TYPE REF TO zcl_abapgit_progress,
li_progress TYPE REF TO zif_abapgit_progress,
lt_tadir LIKE it_tadir,
lt_items TYPE zif_abapgit_definitions=>ty_items_tt,
lx_error TYPE REF TO zcx_abapgit_exception,
@ -430,9 +430,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
TRY.
zcl_abapgit_dependencies=>resolve( CHANGING ct_tadir = lt_tadir ).
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( lt_tadir ).
li_progress = zcl_abapgit_progress=>get_instance( lines( lt_tadir ) ).
lt_items = map_tadir_to_items( lt_tadir ).
@ -440,7 +438,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
it_items = lt_items ).
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
lo_progress->show( iv_current = sy-tabix
li_progress->show( iv_current = sy-tabix
iv_text = |Delete { <ls_tadir>-obj_name }| ) ##NO_TEXT.
CLEAR ls_item.
@ -500,7 +498,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
lt_ddic TYPE TABLE OF ty_deserialization,
lt_rest TYPE TABLE OF ty_deserialization,
lt_late TYPE TABLE OF ty_deserialization,
lo_progress TYPE REF TO zcl_abapgit_progress,
li_progress TYPE REF TO zif_abapgit_progress,
lv_path TYPE string,
lt_items TYPE zif_abapgit_definitions=>ty_items_tt.
DATA: lo_folder_logic TYPE REF TO zcl_abapgit_folder_logic.
@ -528,9 +526,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
CHANGING
ct_results = lt_results ).
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( lt_results ).
li_progress = zcl_abapgit_progress=>get_instance( lines( lt_results ) ).
lt_items = map_results_to_items( lt_results ).
@ -539,7 +535,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
lo_folder_logic = zcl_abapgit_folder_logic=>get_instance( ).
LOOP AT lt_results ASSIGNING <ls_result>.
lo_progress->show( iv_current = sy-tabix
li_progress->show( iv_current = sy-tabix
iv_text = |Deserialize { <ls_result>-obj_name }| ) ##NO_TEXT.
CLEAR ls_item.
@ -642,19 +638,17 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
METHOD deserialize_objects.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress.
DATA: li_progress TYPE REF TO zif_abapgit_progress.
FIELD-SYMBOLS: <ls_obj> LIKE LINE OF it_objects.
zcl_abapgit_objects_activation=>clear( ).
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( it_objects ).
li_progress = zcl_abapgit_progress=>get_instance( lines( it_objects ) ).
LOOP AT it_objects ASSIGNING <ls_obj>.
lo_progress->show(
li_progress->show(
iv_current = sy-tabix
iv_text = |Deserialize { iv_descr } - { <ls_obj>-item-obj_name }| ) ##NO_TEXT.

View File

@ -75,19 +75,16 @@ CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION.
METHOD fetch_remote.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress,
DATA: li_progress TYPE REF TO zif_abapgit_progress,
ls_pull TYPE zcl_abapgit_git_porcelain=>ty_pull_result.
IF mv_request_remote_refresh = abap_false.
RETURN.
ENDIF.
CREATE OBJECT lo_progress
EXPORTING
iv_total = 1.
li_progress = zcl_abapgit_progress=>get_instance( 1 ).
lo_progress->show( iv_current = 1
li_progress->show( iv_current = 1
iv_text = 'Fetch remote files' ) ##NO_TEXT.
ls_pull = zcl_abapgit_git_porcelain=>pull(

View File

@ -58,7 +58,7 @@ ENDCLASS.
CLASS zcl_abapgit_serialize IMPLEMENTATION.
CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
METHOD add_to_return.
@ -77,6 +77,13 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ENDMETHOD.
METHOD constructor.
IF is_merged( ) = abap_true.
gv_max_threads = 1.
ENDIF.
ENDMETHOD.
METHOD determine_max_threads.
IF iv_force_sequential = abap_true.
@ -132,6 +139,21 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
ENDMETHOD.
METHOD is_merged.
DATA lo_marker TYPE REF TO data.
TRY.
CREATE DATA lo_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER') ##no_text.
"No exception --> marker found
rv_result = abap_true.
CATCH cx_sy_create_data_error ##no_handler.
ENDTRY.
ENDMETHOD.
METHOD on_end_of_task.
DATA: lv_result TYPE xstring,
@ -230,7 +252,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
METHOD serialize.
DATA: lv_max TYPE i,
lo_progress TYPE REF TO zcl_abapgit_progress.
li_progress TYPE REF TO zif_abapgit_progress.
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
@ -241,13 +263,11 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
mv_free = lv_max.
mo_log = io_log.
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( it_tadir ).
li_progress = zcl_abapgit_progress=>get_instance( lines( it_tadir ) ).
LOOP AT it_tadir ASSIGNING <ls_tadir>.
lo_progress->show(
li_progress->show(
iv_current = sy-tabix
iv_text = |Serialize { <ls_tadir>-obj_name }, { lv_max } threads| ) ##NO_TEXT.
@ -269,25 +289,4 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
rt_files = mt_files.
ENDMETHOD.
METHOD constructor.
IF is_merged( ) = abap_true.
gv_max_threads = 1.
ENDIF.
ENDMETHOD.
METHOD is_merged.
DATA lo_marker TYPE REF TO data.
TRY.
CREATE DATA lo_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER') ##no_text.
"No exception --> marker found
rv_result = abap_true.
CATCH cx_sy_create_data_error ##no_handler.
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -153,21 +153,19 @@ CLASS ZCL_ABAPGIT_TADIR IMPLEMENTATION.
METHOD check_exists.
DATA: lo_progress TYPE REF TO zcl_abapgit_progress,
DATA: li_progress TYPE REF TO zif_abapgit_progress,
ls_item TYPE zif_abapgit_definitions=>ty_item.
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
CREATE OBJECT lo_progress
EXPORTING
iv_total = lines( it_tadir ).
li_progress = zcl_abapgit_progress=>get_instance( lines( it_tadir ) ).
* rows from database table TADIR are not removed for
* transportable objects until the transport is released
LOOP AT it_tadir ASSIGNING <ls_tadir>.
IF sy-tabix MOD 200 = 0.
lo_progress->show(
li_progress->show(
iv_current = sy-tabix
iv_text = |Check object exists { <ls_tadir>-object } { <ls_tadir>-obj_name }| ).
ENDIF.