save local checksums, #173

plus some 750 pretty printer
This commit is contained in:
larshp 2016-05-25 11:33:18 +00:00
parent 933f5aa781
commit 843f517beb

View File

@ -372,16 +372,16 @@ CLASS lcl_html_toolbar DEFINITION FINAL.
METHODS add IMPORTING iv_txt TYPE string
iv_sub TYPE REF TO lcl_html_toolbar OPTIONAL
iv_cmd TYPE string OPTIONAL.
METHODS render IMPORTING iv_as_droplist_with_label TYPE string OPTIONAL
ib_no_separator TYPE abap_bool OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render IMPORTING iv_as_droplist_with_label TYPE string OPTIONAL
ib_no_separator TYPE abap_bool OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
PRIVATE SECTION.
TYPES: BEGIN OF ty_item,
txt TYPE string,
cmd TYPE string,
sub TYPE REF TO lcl_html_toolbar,
END OF ty_item.
TYPES: BEGIN OF ty_item,
txt TYPE string,
cmd TYPE string,
sub TYPE REF TO lcl_html_toolbar,
END OF ty_item.
TYPES: tt_items TYPE STANDARD TABLE OF ty_item.
DATA mt_items TYPE tt_items.
@ -12831,13 +12831,12 @@ ENDCLASS.
CLASS lcl_persistence_repo DEFINITION FINAL.
PUBLIC SECTION.
TYPES: BEGIN OF ty_file_checksum,
path TYPE string,
filename TYPE string,
sha1 TYPE ty_sha1,
END OF ty_file_checksum.
TYPES: BEGIN OF ty_local_checksum,
item TYPE ty_item,
sha1 TYPE ty_sha1,
END OF ty_local_checksum.
TYPES: ty_file_checksum_tt TYPE STANDARD TABLE OF ty_file_checksum WITH DEFAULT KEY.
TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY.
TYPES: BEGIN OF ty_repo_xml,
url TYPE string,
@ -12845,7 +12844,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
sha1 TYPE ty_sha1,
package TYPE devclass,
offline TYPE sap_bool,
after_last_pull TYPE ty_file_checksum_tt,
local_checksums TYPE ty_local_checksum_tt,
master_language TYPE spras,
END OF ty_repo_xml.
@ -12866,6 +12865,11 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
iv_branch_sha1 TYPE ty_sha1
RAISING lcx_exception.
METHODS update_local_checksums
IMPORTING iv_key TYPE ty_repo-key
it_checksums TYPE ty_local_checksum_tt
RAISING lcx_exception.
METHODS add
IMPORTING iv_url TYPE string
iv_branch_name TYPE string
@ -12958,7 +12962,14 @@ CLASS lcl_repo DEFINITION ABSTRACT.
mo_dot_abapgit TYPE REF TO lcl_dot_abapgit,
ms_data TYPE lcl_persistence_repo=>ty_repo.
METHODS: find_dot_abapgit RAISING lcx_exception.
METHODS:
save_local_checksums
RAISING lcx_exception,
find_dot_abapgit
RAISING lcx_exception,
set_local_checksums
IMPORTING it_checksums TYPE lcl_persistence_repo=>ty_local_checksum_tt
RAISING lcx_exception.
ENDCLASS. "lcl_repo DEFINITION
@ -15835,6 +15846,53 @@ CLASS lcl_repo IMPLEMENTATION.
rt_files = mt_remote.
ENDMETHOD.
METHOD set_local_checksums.
DATA: lo_persistence TYPE REF TO lcl_persistence_repo.
CREATE OBJECT lo_persistence.
lo_persistence->update_local_checksums(
iv_key = ms_data-key
it_checksums = it_checksums ).
ENDMETHOD.
METHOD save_local_checksums.
DATA: lv_xstring TYPE xstring,
lt_checksums TYPE lcl_persistence_repo=>ty_local_checksum_tt,
lt_local TYPE ty_files_item_tt.
FIELD-SYMBOLS: <ls_item> LIKE LINE OF lt_local,
<ls_checksum> LIKE LINE OF lt_checksums,
<ls_local> LIKE LINE OF lt_local.
lt_local = get_files_local( ).
LOOP AT lt_local ASSIGNING <ls_item> WHERE NOT item IS INITIAL.
CLEAR lv_xstring.
LOOP AT lt_local ASSIGNING <ls_local> WHERE item = <ls_item>-item.
CONCATENATE lv_xstring <ls_local>-file-data INTO lv_xstring IN BYTE MODE.
ENDLOOP.
APPEND INITIAL LINE TO lt_checksums ASSIGNING <ls_checksum>.
<ls_checksum>-item = <ls_item>-item.
ASSERT NOT lv_xstring IS INITIAL.
<ls_checksum>-sha1 = lcl_hash=>sha1_raw( lv_xstring ).
DELETE lt_local WHERE item = <ls_item>-item.
ENDLOOP.
set_local_checksums( lt_checksums ).
ENDMETHOD.
METHOD deserialize.
IF mo_dot_abapgit->get_master_language( ) <> sy-langu.
@ -15845,6 +15903,8 @@ CLASS lcl_repo IMPLEMENTATION.
CLEAR mt_local.
save_local_checksums( ).
ENDMETHOD.
METHOD get_files_local.
@ -17712,15 +17772,15 @@ CLASS lcl_gui_page_super DEFINITION ABSTRACT.
PROTECTED SECTION.
METHODS header
IMPORTING io_include_style TYPE REF TO lcl_html_helper OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS footer
IMPORTING io_include_script TYPE REF TO lcl_html_helper OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS title
IMPORTING iv_page_title TYPE string
io_menu TYPE REF TO lcl_html_toolbar OPTIONAL
IMPORTING iv_page_title TYPE string
io_menu TYPE REF TO lcl_html_toolbar OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS get_logo_src
@ -17738,21 +17798,21 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
CREATE OBJECT ro_html.
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
ro_html->add( '<html>' ). "#EC NOTEXT
ro_html->add( '<head>' ). "#EC NOTEXT
ro_html->add( '<title>abapGit</title>' ). "#EC NOTEXT
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
ro_html->add( '<html>' ). "#EC NOTEXT
ro_html->add( '<head>' ). "#EC NOTEXT
ro_html->add( '<title>abapGit</title>' ). "#EC NOTEXT
ro_html->add( styles( ) ).
IF io_include_style IS BOUND.
ro_html->add( '<style type="text/css">' ). "#EC NOTEXT
ro_html->add( '<style type="text/css">' ). "#EC NOTEXT
ro_html->add( io_include_style ).
ro_html->add( '</style>' ). "#EC NOTEXT
ro_html->add( '</style>' ). "#EC NOTEXT
ENDIF.
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' )."#EC NOTEXT
ro_html->add( '</head>' ). "#EC NOTEXT
ro_html->add( '<body>' ). "#EC NOTEXT
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ). "#EC NOTEXT
ro_html->add( '</head>' ). "#EC NOTEXT
ro_html->add( '<body>' ). "#EC NOTEXT
ENDMETHOD. "render html header
@ -17760,23 +17820,23 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
CREATE OBJECT ro_html.
ro_html->add( '<div id="header">' ). "#EC NOTEXT
ro_html->add( '<table class="mixed_height_bar"><tr>' ). "#EC NOTEXT
ro_html->add( '<div id="header">' ). "#EC NOTEXT
ro_html->add( '<table class="mixed_height_bar"><tr>' ). "#EC NOTEXT
ro_html->add( '<td class="logo">' ). "#EC NOTEXT
ro_html->add( '<a href="sapevent:abapgithome">' ). "#EC NOTEXT
ro_html->add( |<img src="{ me->get_logo_src( ) }"></a>| )."#EC NOTEXT
ro_html->add( |<span class="page_title">::{ iv_page_title }</span>| )."#EC NOTEXT
ro_html->add( '</td>' ). "#EC NOTEXT
ro_html->add( '<td class="logo">' ). "#EC NOTEXT
ro_html->add( '<a href="sapevent:abapgithome">' ). "#EC NOTEXT
ro_html->add( |<img src="{ me->get_logo_src( ) }"></a>| ). "#EC NOTEXT
ro_html->add( |<span class="page_title">::{ iv_page_title }</span>| ). "#EC NOTEXT
ro_html->add( '</td>' ). "#EC NOTEXT
IF io_menu IS BOUND.
ro_html->add( '<td class="right">' ). "#EC NOTEXT
ro_html->add( '<td class="right">' ). "#EC NOTEXT
ro_html->add( io_menu->render( ) ).
ro_html->add( '</td>' ). "#EC NOTEXT
ro_html->add( '</td>' ). "#EC NOTEXT
ENDIF.
ro_html->add( '</tr></table>' ). "#EC NOTEXT
ro_html->add( '</div>' ). "#EC NOTEXT
ro_html->add( '</tr></table>' ). "#EC NOTEXT
ro_html->add( '</div>' ). "#EC NOTEXT
ENDMETHOD. "render page title
@ -17784,17 +17844,17 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
CREATE OBJECT ro_html.
ro_html->add( '<div id="footer">' ). "#EC NOTEXT
ro_html->add( |<img src="{ get_logo_src( ) }" >| ). "#EC NOTEXT
ro_html->add( |<span class="version">{ gc_abap_version }</span>| )."#EC NOTEXT
ro_html->add( '</div>' ). "#EC NOTEXT
ro_html->add( '</body>' ). "#EC NOTEXT
ro_html->add( '<div id="footer">' ). "#EC NOTEXT
ro_html->add( |<img src="{ get_logo_src( ) }" >| ). "#EC NOTEXT
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ). "#EC NOTEXT
ro_html->add( '</div>' ). "#EC NOTEXT
ro_html->add( '</body>' ). "#EC NOTEXT
IF io_include_script IS BOUND.
ro_html->add( io_include_script ).
ENDIF.
ro_html->add( '</html>'). "#EC NOTEXT
ro_html->add( '</html>'). "#EC NOTEXT
ENDMETHOD. "render html footer & logo
@ -18343,13 +18403,13 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
ENDIF.
ENDIF.
lo_html->add( '<tr>' ). "#EC NOTEXT
lo_html->add( |<td class="num">{ <ls_diff>-local_line }</td>| ). "#EC NOTEXT
lo_html->add( |<td{ lv_attr_local }><code>{ lv_local }</code></td>| ). "#EC NOTEXT
lo_html->add( |<td class="num">{ <ls_diff>-remote_line }</td>| ). "#EC NOTEXT
lo_html->add( |<td{ lv_attr_remote }><code>{ lv_remote }</code></td>| )."#EC NOTEXT
lo_html->add( |<td class="cmd">{ lv_href }</td>| ). "#EC NOTEXT
lo_html->add( '</tr>' ). "#EC NOTEXT
lo_html->add( '<tr>' ). "#EC NOTEXT
lo_html->add( |<td class="num">{ <ls_diff>-local_line }</td>| ). "#EC NOTEXT
lo_html->add( |<td{ lv_attr_local }><code>{ lv_local }</code></td>| ). "#EC NOTEXT
lo_html->add( |<td class="num">{ <ls_diff>-remote_line }</td>| ). "#EC NOTEXT
lo_html->add( |<td{ lv_attr_remote }><code>{ lv_remote }</code></td>| ). "#EC NOTEXT
lo_html->add( |<td class="cmd">{ lv_href }</td>| ). "#EC NOTEXT
lo_html->add( '</tr>' ). "#EC NOTEXT
ENDLOOP.
@ -21547,6 +21607,30 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
ENDMETHOD.
METHOD update_local_checksums.
DATA: lt_content TYPE lcl_persistence_db=>tt_content,
ls_content LIKE LINE OF lt_content,
ls_repo TYPE ty_repo.
ASSERT NOT iv_key IS INITIAL.
TRY.
ls_repo = read( iv_key ).
CATCH lcx_not_found.
_raise 'key not found'.
ENDTRY.
ls_repo-local_checksums = it_checksums.
ls_content-data_str = to_xml( ls_repo ).
mo_db->update( iv_type = c_type_repo
iv_value = iv_key
iv_data = ls_content-data_str ).
ENDMETHOD.
METHOD update_sha1.
DATA: lt_content TYPE lcl_persistence_db=>tt_content,