mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
refactoring #5
This commit is contained in:
parent
ee1bf174a4
commit
afc6d6add8
|
@ -3,7 +3,7 @@ REPORT zabapgit.
|
|||
* See http://www.abapgit.org
|
||||
|
||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.7.2'. "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.7.3'. "#EC NOTEXT
|
||||
|
||||
********************************************************************************
|
||||
* The MIT License (MIT)
|
||||
|
@ -14685,6 +14685,9 @@ CLASS lcl_repo DEFINITION ABSTRACT.
|
|||
get_name
|
||||
RETURNING VALUE(rv_name) TYPE string
|
||||
RAISING lcx_exception,
|
||||
get_files_local
|
||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||
RAISING lcx_exception,
|
||||
get_package
|
||||
RETURNING VALUE(rv_package) TYPE lcl_persistence_repo=>ty_repo-package,
|
||||
delete
|
||||
|
@ -14700,6 +14703,58 @@ CLASS lcl_repo DEFINITION ABSTRACT.
|
|||
|
||||
ENDCLASS. "lcl_repo DEFINITION
|
||||
|
||||
CLASS lcl_stage DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES: ty_method TYPE c LENGTH 1.
|
||||
|
||||
CONSTANTS: BEGIN OF c_method,
|
||||
add TYPE ty_method VALUE 'A',
|
||||
reset TYPE ty_method VALUE 'E',
|
||||
rm TYPE ty_method VALUE 'M',
|
||||
ignore TYPE ty_method VALUE 'I',
|
||||
END OF c_method.
|
||||
|
||||
TYPES: BEGIN OF ty_stage,
|
||||
file TYPE ty_file,
|
||||
method TYPE ty_method,
|
||||
END OF ty_stage.
|
||||
|
||||
TYPES: ty_stage_tt TYPE SORTED TABLE OF ty_stage
|
||||
WITH UNIQUE KEY file-path file-filename.
|
||||
|
||||
METHODS:
|
||||
add
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
reset
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
rm
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
ignore
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
count
|
||||
RETURNING VALUE(rv_count) TYPE i,
|
||||
lookup
|
||||
IMPORTING iv_path TYPE ty_file-path
|
||||
iv_filename TYPE ty_file-filename
|
||||
RETURNING VALUE(rs_stage) TYPE ty_stage
|
||||
RAISING lcx_not_found,
|
||||
get_all
|
||||
RETURNING VALUE(rt_stage) TYPE ty_stage_tt.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mt_stage TYPE ty_stage_tt.
|
||||
|
||||
METHODS: append
|
||||
IMPORTING is_file TYPE ty_file
|
||||
iv_method TYPE ty_method.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_repo_online DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -14725,9 +14780,6 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL.
|
|||
get_files_remote
|
||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||
RAISING lcx_exception,
|
||||
get_files_local
|
||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||
RAISING lcx_exception,
|
||||
get_objects
|
||||
RETURNING VALUE(rt_objects) TYPE lcl_git_pack=>ty_objects_tt
|
||||
RAISING lcx_exception,
|
||||
|
@ -14738,7 +14790,7 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL.
|
|||
RAISING lcx_exception,
|
||||
push
|
||||
IMPORTING is_comment TYPE ty_comment
|
||||
it_files TYPE ty_files_tt
|
||||
io_stage TYPE REF TO lcl_stage
|
||||
RAISING lcx_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
@ -14785,7 +14837,7 @@ CLASS lcl_git_porcelain DEFINITION FINAL.
|
|||
CLASS-METHODS push
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
is_comment TYPE ty_comment
|
||||
it_files TYPE ty_files_tt
|
||||
io_stage TYPE REF TO lcl_stage
|
||||
RETURNING VALUE(rv_branch) TYPE ty_sha1
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
@ -15114,32 +15166,6 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
rv_sha1 = mv_branch.
|
||||
ENDMETHOD. "get_sha1_remote
|
||||
|
||||
METHOD get_files_local.
|
||||
* todo, this can be optimized, cache the data
|
||||
* and rebould on refresh. Also see STATUS method
|
||||
* it also generates the same files
|
||||
|
||||
DATA: lt_tadir TYPE lcl_tadir=>ty_tadir_tt,
|
||||
ls_item TYPE ty_item,
|
||||
lt_files LIKE rt_files.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files,
|
||||
<ls_tadir> LIKE LINE OF lt_tadir.
|
||||
|
||||
|
||||
lt_tadir = lcl_tadir=>read( get_package( ) ).
|
||||
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
||||
ls_item-obj_type = <ls_tadir>-object.
|
||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||
lt_files = lcl_objects=>serialize( ls_item ).
|
||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||
<ls_file>-path = '/' && <ls_tadir>-path.
|
||||
ENDLOOP.
|
||||
APPEND LINES OF lt_files TO rt_files.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_files_remote.
|
||||
initialize( ).
|
||||
|
||||
|
@ -15171,7 +15197,7 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
|
||||
lv_branch = lcl_git_porcelain=>push( is_comment = is_comment
|
||||
io_repo = me
|
||||
it_files = it_files ).
|
||||
io_stage = io_stage ).
|
||||
|
||||
set_sha1( lv_branch ).
|
||||
|
||||
|
@ -15210,6 +15236,32 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "constructor
|
||||
|
||||
METHOD get_files_local.
|
||||
* todo, this can be optimized, cache the data
|
||||
* and rebuild on refresh. Also see STATUS method
|
||||
* it also generates the same files
|
||||
|
||||
DATA: lt_tadir TYPE lcl_tadir=>ty_tadir_tt,
|
||||
ls_item TYPE ty_item,
|
||||
lt_files LIKE rt_files.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files,
|
||||
<ls_tadir> LIKE LINE OF lt_tadir.
|
||||
|
||||
|
||||
lt_tadir = lcl_tadir=>read( get_package( ) ).
|
||||
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
||||
ls_item-obj_type = <ls_tadir>-object.
|
||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||
lt_files = lcl_objects=>serialize( ls_item ).
|
||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||
<ls_file>-path = '/' && <ls_tadir>-path.
|
||||
ENDLOOP.
|
||||
APPEND LINES OF lt_files TO rt_files.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete.
|
||||
|
||||
DATA: lo_persistence TYPE REF TO lcl_persistence_repo.
|
||||
|
@ -16594,18 +16646,24 @@ CLASS lcl_git_porcelain IMPLEMENTATION.
|
|||
|
||||
DATA:
|
||||
lt_nodes TYPE lcl_git_pack=>ty_nodes_tt,
|
||||
lt_files LIKE it_files,
|
||||
lt_files TYPE ty_files_tt,
|
||||
lv_sha1 TYPE ty_sha1,
|
||||
lt_stage TYPE lcl_stage=>ty_stage_tt,
|
||||
lv_index TYPE i.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF it_files,
|
||||
<ls_node> LIKE LINE OF lt_nodes.
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files,
|
||||
<ls_stage> LIKE LINE OF lt_stage,
|
||||
<ls_node> LIKE LINE OF lt_nodes.
|
||||
|
||||
|
||||
lt_nodes = root_tree( it_objects = io_repo->get_objects( )
|
||||
iv_branch = io_repo->get_sha1_remote( ) ).
|
||||
|
||||
lt_files[] = it_files[].
|
||||
* todo, can only handle add
|
||||
lt_stage = io_stage->get_all( ).
|
||||
LOOP AT lt_stage ASSIGNING <ls_stage> WHERE method = lcl_stage=>c_method-add.
|
||||
APPEND <ls_stage>-file TO lt_files.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||
lv_index = sy-tabix.
|
||||
|
@ -17324,12 +17382,12 @@ CLASS lcl_gui_page_diff DEFINITION FINAL.
|
|||
|
||||
METHODS: constructor
|
||||
IMPORTING
|
||||
is_result TYPE lcl_file_status=>ty_result
|
||||
io_diff TYPE REF TO lcl_diff.
|
||||
is_local TYPE ty_file
|
||||
is_remote TYPE ty_file.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_result TYPE lcl_file_status=>ty_result,
|
||||
mo_diff TYPE REF TO lcl_diff.
|
||||
DATA: mv_filename TYPE string,
|
||||
mo_diff TYPE REF TO lcl_diff.
|
||||
|
||||
METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
METHODS render_head RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
@ -17340,8 +17398,13 @@ ENDCLASS.
|
|||
CLASS lcl_gui_page_diff IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
ms_result = is_result.
|
||||
mo_diff = io_diff.
|
||||
mv_filename = is_local-filename.
|
||||
|
||||
CREATE OBJECT mo_diff
|
||||
EXPORTING
|
||||
iv_local = is_local-data
|
||||
iv_remote = is_remote-data.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD styles.
|
||||
|
@ -17431,9 +17494,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
lo_html->add( |<span class="diff_banner diff_del">- { ls_count-delete }</span>| ). "#EC NOTEXT
|
||||
lo_html->add( |<span class="diff_banner diff_upd">~ { ls_count-update }</span>| ). "#EC NOTEXT
|
||||
lo_html->add( '<span class="diff_name">' ). "#EC NOTEXT
|
||||
lo_html->add( ms_result-obj_type ). "#EC NOTEXT
|
||||
lo_html->add( |<strong>{ ms_result-obj_name }</strong>| ). "#EC NOTEXT
|
||||
lo_html->add( |({ ms_result-filename })| ).
|
||||
lo_html->add( |{ mv_filename }| ).
|
||||
lo_html->add( '</span>' ). "#EC NOTEXT
|
||||
lo_html->add( '</div>' ). "#EC NOTEXT
|
||||
|
||||
|
@ -17558,58 +17619,6 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_stage DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
TYPES: ty_method TYPE c LENGTH 1.
|
||||
|
||||
CONSTANTS: BEGIN OF c_method,
|
||||
add TYPE ty_method VALUE 'A',
|
||||
reset TYPE ty_method VALUE 'E',
|
||||
rm TYPE ty_method VALUE 'M',
|
||||
ignore TYPE ty_method VALUE 'I',
|
||||
END OF c_method.
|
||||
|
||||
TYPES: BEGIN OF ty_stage,
|
||||
file TYPE ty_file,
|
||||
method TYPE ty_method,
|
||||
END OF ty_stage.
|
||||
|
||||
TYPES: ty_stage_tt TYPE SORTED TABLE OF ty_stage
|
||||
WITH UNIQUE KEY file-path file-filename.
|
||||
|
||||
METHODS:
|
||||
add
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
reset
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
rm
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
ignore
|
||||
IMPORTING is_file TYPE ty_file
|
||||
RAISING lcx_exception,
|
||||
count
|
||||
RETURNING VALUE(rv_count) TYPE i,
|
||||
lookup
|
||||
IMPORTING iv_path TYPE ty_file-path
|
||||
iv_filename TYPE ty_file-filename
|
||||
RETURNING VALUE(rs_stage) TYPE ty_stage
|
||||
RAISING lcx_not_found,
|
||||
get_all
|
||||
RETURNING VALUE(rt_stage) TYPE ty_stage_tt.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mt_stage TYPE ty_stage_tt.
|
||||
|
||||
METHODS: append
|
||||
IMPORTING is_file TYPE ty_file
|
||||
iv_method TYPE ty_method.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_stage IMPLEMENTATION.
|
||||
|
||||
METHOD lookup.
|
||||
|
@ -18093,8 +18102,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
lt_local TYPE ty_files_tt,
|
||||
ls_item TYPE ty_item,
|
||||
lo_page TYPE REF TO lcl_gui_page_diff,
|
||||
lo_repo TYPE REF TO lcl_repo_online,
|
||||
lo_diff TYPE REF TO lcl_diff.
|
||||
lo_repo TYPE REF TO lcl_repo_online.
|
||||
|
||||
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF lt_remote,
|
||||
<ls_local> LIKE LINE OF lt_local.
|
||||
|
@ -18120,15 +18128,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
_raise 'not found locally'.
|
||||
ENDIF.
|
||||
|
||||
CREATE OBJECT lo_diff
|
||||
EXPORTING
|
||||
iv_local = <ls_local>-data
|
||||
iv_remote = <ls_remote>-data.
|
||||
|
||||
CREATE OBJECT lo_page
|
||||
EXPORTING
|
||||
is_result = is_result
|
||||
io_diff = lo_diff.
|
||||
is_local = <ls_local>
|
||||
is_remote = <ls_remote>.
|
||||
|
||||
lcl_gui=>call_page( lo_page ).
|
||||
|
||||
|
@ -18236,18 +18239,22 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
METHOD commit.
|
||||
|
||||
DATA: lt_results TYPE lcl_file_status=>ty_results_tt,
|
||||
lt_push TYPE ty_files_tt,
|
||||
* lt_push TYPE ty_files_tt,
|
||||
ls_item TYPE ty_item,
|
||||
ls_comment TYPE ty_comment,
|
||||
lo_stage TYPE REF TO lcl_stage,
|
||||
lo_repo TYPE REF TO lcl_repo_online,
|
||||
lt_files TYPE ty_files_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF lt_results.
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files,
|
||||
<ls_result> LIKE LINE OF lt_results.
|
||||
|
||||
|
||||
lo_repo ?= lcl_repo_srv=>get( iv_key ).
|
||||
lt_results = lo_repo->status( ).
|
||||
|
||||
CREATE OBJECT lo_stage.
|
||||
|
||||
LOOP AT lt_results ASSIGNING <ls_result>
|
||||
WHERE match = abap_false
|
||||
AND filename <> ''.
|
||||
|
@ -18256,10 +18263,13 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
ls_item-obj_name = <ls_result>-obj_name.
|
||||
|
||||
lt_files = lcl_objects=>serialize( ls_item ).
|
||||
APPEND LINES OF lt_files TO lt_push.
|
||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||
lo_stage->add( <ls_file> ).
|
||||
* APPEND LINES OF lt_files TO lt_push.
|
||||
ENDLOOP.
|
||||
ENDLOOP.
|
||||
|
||||
IF lt_push[] IS INITIAL.
|
||||
IF lo_stage->count( ) = 0.
|
||||
_raise 'no changes'.
|
||||
ENDIF.
|
||||
|
||||
|
@ -18269,7 +18279,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
lo_repo->push( is_comment = ls_comment
|
||||
it_files = lt_push ).
|
||||
io_stage = lo_stage ).
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
|
@ -18497,8 +18507,11 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
ls_comment TYPE ty_comment,
|
||||
lo_repo TYPE REF TO lcl_repo_online,
|
||||
lv_package TYPE devclass,
|
||||
lo_stage TYPE REF TO lcl_stage,
|
||||
lv_obj_name TYPE tadir-obj_name.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files.
|
||||
|
||||
|
||||
lo_repo ?= lcl_repo_srv=>get( iv_key ).
|
||||
lv_package = lo_repo->get_package( ).
|
||||
|
@ -18521,13 +18534,18 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
|
||||
lt_files = lcl_objects=>serialize( is_item ).
|
||||
|
||||
CREATE OBJECT lo_stage.
|
||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||
lo_stage->add( <ls_file> ).
|
||||
ENDLOOP.
|
||||
|
||||
ls_comment = popup_comment( ).
|
||||
IF ls_comment IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lo_repo->push( is_comment = ls_comment
|
||||
it_files = lt_files ).
|
||||
io_stage = lo_stage ).
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user