file sha1 at local checksums #407

This commit is contained in:
sbcgua 2016-11-06 13:52:51 +02:00
parent fb371ae903
commit 15619130cd
6 changed files with 31 additions and 10 deletions

View File

@ -8,13 +8,18 @@ TYPES: ty_type TYPE c LENGTH 6,
ty_bitbyte TYPE c LENGTH 8, ty_bitbyte TYPE c LENGTH 8,
ty_sha1 TYPE c LENGTH 40. ty_sha1 TYPE c LENGTH 40.
TYPES: BEGIN OF ty_file, TYPES: BEGIN OF ty_file_signature,
path TYPE string, path TYPE string,
filename TYPE string, filename TYPE string,
data TYPE xstring,
sha1 TYPE ty_sha1, sha1 TYPE ty_sha1,
END OF ty_file_signature.
TYPES: BEGIN OF ty_file.
INCLUDE TYPE ty_file_signature.
TYPES: data TYPE xstring,
END OF ty_file. END OF ty_file.
TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY. TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY.
TYPES: ty_file_signatures_tt TYPE STANDARD TABLE OF ty_file_signature WITH DEFAULT KEY.
TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY. TYPES: ty_string_tt TYPE STANDARD TABLE OF string WITH DEFAULT KEY.
TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY. TYPES: tt_w3urls TYPE STANDARD TABLE OF w3url WITH DEFAULT KEY.

View File

@ -93,6 +93,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
TYPES: BEGIN OF ty_local_checksum, TYPES: BEGIN OF ty_local_checksum,
item TYPE ty_item, item TYPE ty_item,
sha1 TYPE ty_sha1, sha1 TYPE ty_sha1,
files TYPE ty_file_signatures_tt,
END OF ty_local_checksum. END OF ty_local_checksum.
TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY. TYPES: ty_local_checksum_tt TYPE STANDARD TABLE OF ty_local_checksum WITH DEFAULT KEY.

View File

@ -44,6 +44,8 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv.
build_local_checksums build_local_checksums
RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt
RAISING lcx_exception, RAISING lcx_exception,
refresh_local_checksums
RAISING lcx_exception,
is_offline is_offline
RETURNING VALUE(rv_offline) TYPE abap_bool RETURNING VALUE(rv_offline) TYPE abap_bool
RAISING lcx_exception. RAISING lcx_exception.

View File

@ -332,26 +332,30 @@ CLASS lcl_repo IMPLEMENTATION.
METHOD build_local_checksums. METHOD build_local_checksums.
DATA: lv_xstring TYPE xstring, DATA: lv_xstring TYPE xstring,
lt_local TYPE ty_files_item_tt. lt_local TYPE SORTED TABLE OF ty_file_item WITH NON-UNIQUE KEY item.
FIELD-SYMBOLS: <ls_item> LIKE LINE OF lt_local, FIELD-SYMBOLS: <ls_item> LIKE LINE OF lt_local,
<ls_checksum> LIKE LINE OF rt_checksums, <ls_checksum> LIKE LINE OF rt_checksums,
<ls_file_sig> LIKE LINE OF <ls_checksum>-files,
<ls_local> LIKE LINE OF lt_local. <ls_local> LIKE LINE OF lt_local.
lt_local = get_files_local( ). lt_local = get_files_local( ).
DELETE lt_local WHERE item IS INITIAL.
LOOP AT lt_local ASSIGNING <ls_item> WHERE NOT item IS INITIAL. LOOP AT lt_local ASSIGNING <ls_item>.
CLEAR lv_xstring. CLEAR lv_xstring.
APPEND INITIAL LINE TO rt_checksums ASSIGNING <ls_checksum>.
LOOP AT lt_local ASSIGNING <ls_local> WHERE item = <ls_item>-item. 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. CONCATENATE lv_xstring <ls_local>-file-data INTO lv_xstring IN BYTE MODE.
APPEND INITIAL LINE TO <ls_checksum>-files ASSIGNING <ls_file_sig>.
MOVE-CORRESPONDING <ls_local>-file TO <ls_file_sig>.
ENDLOOP. ENDLOOP.
APPEND INITIAL LINE TO rt_checksums ASSIGNING <ls_checksum>.
<ls_checksum>-item = <ls_item>-item.
ASSERT NOT lv_xstring IS INITIAL. ASSERT NOT lv_xstring IS INITIAL.
<ls_checksum>-item = <ls_item>-item.
<ls_checksum>-sha1 = lcl_hash=>sha1_raw( lv_xstring ). <ls_checksum>-sha1 = lcl_hash=>sha1_raw( lv_xstring ).
DELETE lt_local WHERE item = <ls_item>-item. DELETE lt_local WHERE item = <ls_item>-item.
@ -360,6 +364,10 @@ CLASS lcl_repo IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD refresh_local_checksums.
set( it_checksums = build_local_checksums( ) ).
ENDMETHOD. "refresh_local_checksums
METHOD deserialize. METHOD deserialize.
IF mo_dot_abapgit IS INITIAL. IF mo_dot_abapgit IS INITIAL.

View File

@ -312,6 +312,9 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
WHEN c_actions-toggle_changes. " Toggle changes only view WHEN c_actions-toggle_changes. " Toggle changes only view
mv_changes_only = lcl_app=>user( )->toggle_changes_only( ). mv_changes_only = lcl_app=>user( )->toggle_changes_only( ).
ev_state = gc_event_state-re_render. ev_state = gc_event_state-re_render.
WHEN 'update_checksums'.
mo_repo->refresh_local_checksums( ).
ev_state = gc_event_state-re_render.
ENDCASE. ENDCASE.
ENDMETHOD. "lif_gui_page~on_event ENDMETHOD. "lif_gui_page~on_event
@ -460,6 +463,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
iv_act = |{ gc_action-repo_remote_change }?{ lv_key }| ). iv_act = |{ gc_action-repo_remote_change }?{ lv_key }| ).
lo_tb_advanced->add( iv_txt = 'Make off-line' lo_tb_advanced->add( iv_txt = 'Make off-line'
iv_act = |{ gc_action-repo_remote_detach }?{ lv_key }| ). iv_act = |{ gc_action-repo_remote_detach }?{ lv_key }| ).
lo_tb_advanced->add( iv_txt = 'Update local checksums'
iv_act = |update_checksums| ).
ELSE. ELSE.
lo_tb_advanced->add( iv_txt = 'Make on-line' lo_tb_advanced->add( iv_txt = 'Make on-line'
iv_act = |{ gc_action-repo_remote_attach }?{ lv_key }| ). iv_act = |{ gc_action-repo_remote_attach }?{ lv_key }| ).