Store user and time for last deserialize

With this commit after every deserialize operation the user, date and time
are stored in repo xml. The information is shown in repo overview.
This commit is contained in:
Christian Guenter 2018-07-24 15:36:49 +00:00 committed by Lars Hvam
parent 5d439e3699
commit 335759f741
4 changed files with 123 additions and 27 deletions

View File

@ -79,10 +79,18 @@ CLASS zcl_abapgit_persistence_repo DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS update_local_settings METHODS update_local_settings
IMPORTING IMPORTING
!iv_key TYPE zif_abapgit_persistence=>ty_repo-key iv_key TYPE zif_abapgit_persistence=>ty_repo-key
!is_settings TYPE zif_abapgit_persistence=>ty_repo_xml-local_settings is_settings TYPE zif_abapgit_persistence=>ty_repo_xml-local_settings
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS update_deserialized
IMPORTING
iv_key TYPE zif_abapgit_persistence=>ty_value
iv_deserialized_at TYPE timestampl
iv_deserialized_by TYPE xubname
RAISING
zcx_abapgit_exception.
PRIVATE SECTION. PRIVATE SECTION.
DATA mo_db TYPE REF TO zcl_abapgit_persistence_db . DATA mo_db TYPE REF TO zcl_abapgit_persistence_db .
@ -444,4 +452,34 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION.
iv_data = ls_content-data_str ). iv_data = ls_content-data_str ).
ENDMETHOD. ENDMETHOD.
METHOD update_deserialized.
DATA: lt_content TYPE zif_abapgit_persistence=>tt_content,
ls_content LIKE LINE OF lt_content,
ls_repo TYPE zif_abapgit_persistence=>ty_repo.
ASSERT NOT iv_key IS INITIAL.
TRY.
ls_repo = read( iv_key ).
CATCH zcx_abapgit_not_found.
zcx_abapgit_exception=>raise( 'key not found' ).
ENDTRY.
IF iv_deserialized_at IS NOT INITIAL.
ls_repo-deserialized_at = iv_deserialized_at.
ENDIF.
IF iv_deserialized_by IS NOT INITIAL.
ls_repo-deserialized_by = iv_deserialized_by.
ENDIF.
ls_content-data_str = to_xml( ls_repo ).
mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo
iv_value = iv_key
iv_data = ls_content-data_str ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -35,6 +35,8 @@ INTERFACE zif_abapgit_persistence PUBLIC.
package TYPE devclass, package TYPE devclass,
created_by TYPE xubname, created_by TYPE xubname,
created_at TYPE timestampl, created_at TYPE timestampl,
deserialized_by TYPE xubname,
deserialized_at TYPE timestampl,
offline TYPE sap_bool, offline TYPE sap_bool,
local_checksums TYPE ty_local_checksum_tt, local_checksums TYPE ty_local_checksum_tt,
dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit, dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit,

View File

@ -19,15 +19,17 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION
PRIVATE SECTION. PRIVATE SECTION.
TYPES: TYPES:
BEGIN OF ty_overview, BEGIN OF ty_overview,
favorite TYPE string, favorite TYPE string,
type TYPE string, type TYPE string,
key TYPE string, key TYPE string,
name TYPE string, name TYPE string,
url TYPE string, url TYPE string,
package TYPE string, package TYPE string,
branch TYPE string, branch TYPE string,
created_by TYPE string, created_by TYPE string,
created_at TYPE string, created_at TYPE string,
deserialized_by TYPE string,
deserialized_at TYPE string,
END OF ty_overview, END OF ty_overview,
tty_overview TYPE STANDARD TABLE OF ty_overview tty_overview TYPE STANDARD TABLE OF ty_overview
WITH NON-UNIQUE DEFAULT KEY. WITH NON-UNIQUE DEFAULT KEY.
@ -158,13 +160,15 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
IF mv_filter IS NOT INITIAL. IF mv_filter IS NOT INITIAL.
DELETE ct_overview WHERE key NS mv_filter DELETE ct_overview WHERE key NS mv_filter
AND name NS mv_filter AND name NS mv_filter
AND url NS mv_filter AND url NS mv_filter
AND package NS mv_filter AND package NS mv_filter
AND branch NS mv_filter AND branch NS mv_filter
AND created_by NS mv_filter AND created_by NS mv_filter
AND created_at NS mv_filter. AND created_at NS mv_filter
AND deserialized_by NS mv_filter
AND deserialized_at NS mv_filter.
ENDIF. ENDIF.
@ -242,6 +246,17 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
ls_overview-created_at = |{ lv_date DATE = USER } { lv_time TIME = USER }|. ls_overview-created_at = |{ lv_date DATE = USER } { lv_time TIME = USER }|.
ENDIF. ENDIF.
ls_overview-deserialized_by = <ls_repo>-deserialized_by.
IF <ls_repo>-deserialized_at IS NOT INITIAL.
CONVERT TIME STAMP <ls_repo>-deserialized_at
TIME ZONE mv_time_zone
INTO DATE lv_date
TIME lv_time.
ls_overview-deserialized_at = |{ lv_date DATE = USER } { lv_time TIME = USER }|.
ENDIF.
INSERT ls_overview INTO TABLE rt_overview. INSERT ls_overview INTO TABLE rt_overview.
ENDLOOP. ENDLOOP.
@ -406,6 +421,8 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
io_html->add( |<th>Branch name</th>| ). io_html->add( |<th>Branch name</th>| ).
io_html->add( |<th>Creator</th>| ). io_html->add( |<th>Creator</th>| ).
io_html->add( |<th>Created at [{ mv_time_zone }]</th>| ). io_html->add( |<th>Created at [{ mv_time_zone }]</th>| ).
io_html->add( |<th>Deserialized by</th>| ).
io_html->add( |<th>Deserialized at [{ mv_time_zone }]</th>| ).
io_html->add( |<th></th>| ). io_html->add( |<th></th>| ).
io_html->add( '</tr>' ). io_html->add( '</tr>' ).
io_html->add( '</thead>' ). io_html->add( '</thead>' ).
@ -473,6 +490,8 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
io_html->add( |<td>{ <ls_overview>-branch }</td>| ). io_html->add( |<td>{ <ls_overview>-branch }</td>| ).
io_html->add( |<td>{ <ls_overview>-created_by }</td>| ). io_html->add( |<td>{ <ls_overview>-created_by }</td>| ).
io_html->add( |<td>{ <ls_overview>-created_at }</td>| ). io_html->add( |<td>{ <ls_overview>-created_at }</td>| ).
io_html->add( |<td>{ <ls_overview>-deserialized_by }</td>| ).
io_html->add( |<td>{ <ls_overview>-deserialized_at }</td>| ).
io_html->add( |<td>| ). io_html->add( |<td>| ).
io_html->add( |</td>| ). io_html->add( |</td>| ).
io_html->add( |</tr>| ). io_html->add( |</tr>| ).
@ -510,6 +529,12 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION.
add_order_by_option( iv_option = |CREATED_AT| add_order_by_option( iv_option = |CREATED_AT|
io_html = io_html ). io_html = io_html ).
add_order_by_option( iv_option = |DESERIALIZED_BY|
io_html = io_html ).
add_order_by_option( iv_option = |DESERIALIZED_AT|
io_html = io_html ).
io_html->add( |</select>| ). io_html->add( |</select>| ).
ENDMETHOD. ENDMETHOD.

View File

@ -110,7 +110,6 @@ CLASS zcl_abapgit_repo DEFINITION
PROTECTED SECTION. PROTECTED SECTION.
DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt . DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt .
DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt . DATA mt_remote TYPE zif_abapgit_definitions=>ty_files_tt .
DATA mv_do_local_refresh TYPE abap_bool . DATA mv_do_local_refresh TYPE abap_bool .
@ -120,16 +119,24 @@ CLASS zcl_abapgit_repo DEFINITION
METHODS set METHODS set
IMPORTING IMPORTING
!it_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt OPTIONAL !it_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt OPTIONAL
!iv_url TYPE zif_abapgit_persistence=>ty_repo-url OPTIONAL !iv_url TYPE zif_abapgit_persistence=>ty_repo-url OPTIONAL
!iv_branch_name TYPE zif_abapgit_persistence=>ty_repo-branch_name OPTIONAL !iv_branch_name TYPE zif_abapgit_persistence=>ty_repo-branch_name OPTIONAL
!iv_head_branch TYPE zif_abapgit_persistence=>ty_repo-head_branch OPTIONAL !iv_head_branch TYPE zif_abapgit_persistence=>ty_repo-head_branch OPTIONAL
!iv_offline TYPE zif_abapgit_persistence=>ty_repo-offline OPTIONAL !iv_offline TYPE zif_abapgit_persistence=>ty_repo-offline OPTIONAL
!is_dot_abapgit TYPE zif_abapgit_persistence=>ty_repo-dot_abapgit OPTIONAL !is_dot_abapgit TYPE zif_abapgit_persistence=>ty_repo-dot_abapgit OPTIONAL
!is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings OPTIONAL !is_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings OPTIONAL
!iv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at OPTIONAL
!iv_deserialized_by TYPE zif_abapgit_persistence=>ty_repo-deserialized_by OPTIONAL
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
PRIVATE SECTION.
METHODS:
update_last_deserialize
RAISING
zcx_abapgit_exception.
ENDCLASS. ENDCLASS.
@ -215,6 +222,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
CLEAR: mt_local, mv_last_serialization. CLEAR: mt_local, mv_last_serialization.
update_local_checksums( lt_updated_files ). update_local_checksums( lt_updated_files ).
update_last_deserialize( ).
ENDMETHOD. ENDMETHOD.
@ -494,7 +502,9 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
OR iv_head_branch IS SUPPLIED OR iv_head_branch IS SUPPLIED
OR iv_offline IS SUPPLIED OR iv_offline IS SUPPLIED
OR is_dot_abapgit IS SUPPLIED OR is_dot_abapgit IS SUPPLIED
OR is_local_settings IS SUPPLIED. OR is_local_settings IS SUPPLIED
OR iv_deserialized_by IS SUPPLIED
OR iv_deserialized_at IS SUPPLIED.
CREATE OBJECT lo_persistence. CREATE OBJECT lo_persistence.
@ -547,6 +557,15 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
ms_data-local_settings = is_local_settings. ms_data-local_settings = is_local_settings.
ENDIF. ENDIF.
IF iv_deserialized_at IS SUPPLIED
OR iv_deserialized_by IS SUPPLIED.
lo_persistence->update_deserialized(
iv_key = ms_data-key
iv_deserialized_at = iv_deserialized_at
iv_deserialized_by = iv_deserialized_by ).
ms_data-deserialized_at = iv_deserialized_at.
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -648,5 +667,17 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
ENDMETHOD. " update_local_checksums ENDMETHOD. " update_local_checksums
METHOD update_last_deserialize.
DATA: lv_deserialized_at TYPE zif_abapgit_persistence=>ty_repo-deserialized_at,
lv_deserialized_by TYPE zif_abapgit_persistence=>ty_repo-deserialized_by.
GET TIME STAMP FIELD lv_deserialized_at.
lv_deserialized_by = sy-uname.
set( iv_deserialized_at = lv_deserialized_at
iv_deserialized_by = lv_deserialized_by ).
ENDMETHOD.
ENDCLASS. ENDCLASS.