align keys in LCL_REPO_SRV and LCL_PRESISTENCE_REPO, #207

This commit is contained in:
larshp 2016-05-06 09:28:06 +00:00
parent 1de2181423
commit 81581c6e04

View File

@ -3,7 +3,7 @@ REPORT zabapgit.
* See http://www.abapgit.org * See http://www.abapgit.org
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
gc_abap_version TYPE string VALUE 'v1.4.9'. "#EC NOTEXT gc_abap_version TYPE string VALUE 'v1.4.10'. "#EC NOTEXT
******************************************************************************** ********************************************************************************
* The MIT License (MIT) * The MIT License (MIT)
@ -14480,13 +14480,18 @@ ENDCLASS.
CLASS lcl_persistence_repo DEFINITION FINAL. CLASS lcl_persistence_repo DEFINITION FINAL.
PUBLIC SECTION. PUBLIC SECTION.
TYPES: BEGIN OF ty_repo, TYPES: BEGIN OF ty_repo_xml,
url TYPE string, url TYPE string,
branch_name TYPE string, branch_name TYPE string,
sha1 TYPE ty_sha1, sha1 TYPE ty_sha1,
package TYPE devclass, package TYPE devclass,
offline TYPE sap_bool, offline TYPE sap_bool,
END OF ty_repo. END OF ty_repo_xml.
TYPES: BEGIN OF ty_repo,
key TYPE lcl_persistence_db=>ty_value.
INCLUDE TYPE ty_repo_xml.
TYPES: END OF ty_repo.
TYPES: tt_repo TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY. TYPES: tt_repo TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY.
TYPES: ty_repo_id TYPE c LENGTH 12. TYPES: ty_repo_id TYPE c LENGTH 12.
@ -14498,7 +14503,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
RAISING lcx_exception. RAISING lcx_exception.
METHODS update METHODS update
IMPORTING iv_url TYPE ty_repo-url IMPORTING iv_key TYPE ty_repo-key
iv_branch_sha1 TYPE ty_sha1 iv_branch_sha1 TYPE ty_sha1
RAISING lcx_exception. RAISING lcx_exception.
@ -14508,32 +14513,32 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
iv_branch TYPE ty_sha1 OPTIONAL iv_branch TYPE ty_sha1 OPTIONAL
iv_package TYPE devclass iv_package TYPE devclass
iv_offline TYPE sap_bool DEFAULT abap_false iv_offline TYPE sap_bool DEFAULT abap_false
RETURNING VALUE(rv_key) TYPE ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
METHODS delete METHODS delete
IMPORTING iv_url TYPE ty_repo-url IMPORTING iv_key TYPE ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
METHODS read METHODS read
IMPORTING iv_url TYPE ty_repo-url IMPORTING iv_key TYPE ty_repo-key
RETURNING VALUE(rs_repo) TYPE ty_repo RETURNING VALUE(rs_repo) TYPE ty_repo
RAISING lcx_exception RAISING lcx_exception
lcx_not_found. lcx_not_found.
METHODS lock METHODS lock
IMPORTING iv_mode TYPE enqmode IMPORTING iv_mode TYPE enqmode
iv_url TYPE ty_repo-url iv_key TYPE ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS c_type_repo TYPE lcl_persistence_db=>ty_type VALUE 'REPO'. CONSTANTS c_type_repo TYPE lcl_persistence_db=>ty_type VALUE 'REPO'.
DATA: mo_db TYPE REF TO lcl_persistence_db. DATA: mo_db TYPE REF TO lcl_persistence_db.
METHODS from_xml METHODS from_xml
IMPORTING iv_repo_xml_string TYPE string IMPORTING iv_repo_xml_string TYPE string
RETURNING VALUE(rs_repo) TYPE ty_repo RETURNING VALUE(rs_repo) TYPE ty_repo_xml
RAISING lcx_exception. RAISING lcx_exception.
METHODS to_xml METHODS to_xml
@ -14544,11 +14549,6 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
RETURNING VALUE(rv_next_repo_id) TYPE lcl_persistence_db=>ty_content-value RETURNING VALUE(rv_next_repo_id) TYPE lcl_persistence_db=>ty_content-value
RAISING lcx_exception. RAISING lcx_exception.
METHODS url_to_id
IMPORTING iv_url TYPE ty_repo-url
RETURNING VALUE(rv_id) TYPE lcl_persistence_db=>ty_content-value
RAISING lcx_exception.
ENDCLASS. ENDCLASS.
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
@ -14559,14 +14559,11 @@ ENDCLASS.
CLASS lcl_repo DEFINITION ABSTRACT. CLASS lcl_repo DEFINITION ABSTRACT.
PUBLIC SECTION. PUBLIC SECTION.
TYPES: ty_key TYPE i.
METHODS: METHODS:
constructor constructor
IMPORTING iv_key TYPE ty_key IMPORTING is_data TYPE lcl_persistence_repo=>ty_repo,
is_data TYPE lcl_persistence_repo=>ty_repo,
get_key get_key
RETURNING VALUE(rv_key) TYPE ty_key, RETURNING VALUE(rv_key) TYPE lcl_persistence_db=>ty_value,
get_name get_name
RETURNING VALUE(rv_name) TYPE string RETURNING VALUE(rv_name) TYPE string
RAISING lcx_exception, RAISING lcx_exception,
@ -14574,8 +14571,8 @@ CLASS lcl_repo DEFINITION ABSTRACT.
RETURNING VALUE(rv_package) TYPE lcl_persistence_repo=>ty_repo-package, RETURNING VALUE(rv_package) TYPE lcl_persistence_repo=>ty_repo-package,
delete delete
RAISING lcx_exception, RAISING lcx_exception,
add * add
RAISING lcx_exception, * RAISING lcx_exception,
refresh refresh
RAISING lcx_exception, RAISING lcx_exception,
is_offline is_offline
@ -14583,8 +14580,7 @@ CLASS lcl_repo DEFINITION ABSTRACT.
RAISING lcx_exception. RAISING lcx_exception.
PROTECTED SECTION. PROTECTED SECTION.
DATA: mv_key TYPE ty_key, DATA: ms_data TYPE lcl_persistence_repo=>ty_repo.
ms_data TYPE lcl_persistence_repo=>ty_repo.
ENDCLASS. "lcl_repo DEFINITION ENDCLASS. "lcl_repo DEFINITION
@ -14599,8 +14595,7 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL.
METHODS: METHODS:
refresh REDEFINITION, refresh REDEFINITION,
constructor constructor
IMPORTING iv_key TYPE ty_key IMPORTING is_data TYPE lcl_persistence_repo=>ty_repo
is_data TYPE lcl_persistence_repo=>ty_repo
RAISING lcx_exception, RAISING lcx_exception,
get_url get_url
RETURNING VALUE(rv_url) TYPE lcl_persistence_repo=>ty_repo-url, RETURNING VALUE(rv_url) TYPE lcl_persistence_repo=>ty_repo-url,
@ -14804,16 +14799,12 @@ CLASS lcl_repo_srv DEFINITION FINAL.
RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo_offline RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo_offline
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS add
IMPORTING io_repo TYPE REF TO lcl_repo
RAISING lcx_exception.
CLASS-METHODS delete CLASS-METHODS delete
IMPORTING io_repo TYPE REF TO lcl_repo IMPORTING io_repo TYPE REF TO lcl_repo
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS get CLASS-METHODS get
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_db=>ty_value
RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo. RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo.
PRIVATE SECTION. PRIVATE SECTION.
@ -14822,6 +14813,10 @@ CLASS lcl_repo_srv DEFINITION FINAL.
go_persistence TYPE REF TO lcl_persistence_repo, go_persistence TYPE REF TO lcl_persistence_repo,
gt_list TYPE ty_repo_tt. gt_list TYPE ty_repo_tt.
CLASS-METHODS add
IMPORTING io_repo TYPE REF TO lcl_repo
RAISING lcx_exception.
CLASS-METHODS: CLASS-METHODS:
validate_package validate_package
IMPORTING IMPORTING
@ -14845,9 +14840,7 @@ CLASS lcl_repo_online IMPLEMENTATION.
METHOD constructor. METHOD constructor.
super->constructor( iv_key = iv_key super->constructor( is_data ).
is_data = is_data ).
refresh( ). refresh( ).
ENDMETHOD. "constructor ENDMETHOD. "constructor
@ -14864,7 +14857,6 @@ CLASS lcl_repo_online IMPLEMENTATION.
lcl_objects=>deserialize( it_files = mt_files lcl_objects=>deserialize( it_files = mt_files
iv_package = get_package( ) ). iv_package = get_package( ) ).
lcl_repo_srv=>add( me ).
set_sha1( mv_branch ). set_sha1( mv_branch ).
ENDMETHOD. "deserialize ENDMETHOD. "deserialize
@ -14924,7 +14916,7 @@ CLASS lcl_repo_online IMPLEMENTATION.
CREATE OBJECT lo_persistence. CREATE OBJECT lo_persistence.
lo_persistence->update( iv_url = ms_data-url lo_persistence->update( iv_key = ms_data-key
iv_branch_sha1 = iv_sha1 ). iv_branch_sha1 = iv_sha1 ).
ms_data-sha1 = iv_sha1. ms_data-sha1 = iv_sha1.
@ -14941,8 +14933,11 @@ ENDCLASS. "lcl_repo_online IMPLEMENTATION
CLASS lcl_repo IMPLEMENTATION. CLASS lcl_repo IMPLEMENTATION.
METHOD constructor. METHOD constructor.
ASSERT NOT is_data-key IS INITIAL.
ms_data = is_data. ms_data = is_data.
mv_key = iv_key.
ENDMETHOD. "constructor ENDMETHOD. "constructor
METHOD delete. METHOD delete.
@ -14952,7 +14947,7 @@ CLASS lcl_repo IMPLEMENTATION.
CREATE OBJECT lo_persistence. CREATE OBJECT lo_persistence.
lo_persistence->delete( ms_data-url ). lo_persistence->delete( ms_data-key ).
ENDMETHOD. "delete ENDMETHOD. "delete
@ -14967,28 +14962,28 @@ CLASS lcl_repo IMPLEMENTATION.
ENDMETHOD. "refresh ENDMETHOD. "refresh
METHOD add. * METHOD add.
*
DATA: lo_persistence TYPE REF TO lcl_persistence_repo. * DATA: lo_persistence TYPE REF TO lcl_persistence_repo.
*
*
CREATE OBJECT lo_persistence. * CREATE OBJECT lo_persistence.
*
lo_persistence->add( * lo_persistence->add(
iv_url = ms_data-url * iv_url = ms_data-url
iv_branch_name = ms_data-branch_name * iv_branch_name = ms_data-branch_name
iv_branch = ms_data-sha1 * iv_branch = ms_data-sha1
iv_package = ms_data-package * iv_package = ms_data-package
iv_offline = ms_data-offline ). * iv_offline = ms_data-offline ).
*
ENDMETHOD. "add * ENDMETHOD. "add
METHOD get_package. METHOD get_package.
rv_package = ms_data-package. rv_package = ms_data-package.
ENDMETHOD. "get_package ENDMETHOD. "get_package
METHOD get_key. METHOD get_key.
rv_key = mv_key. rv_key = ms_data-key.
ENDMETHOD. "get_key ENDMETHOD. "get_key
METHOD get_name. METHOD get_name.
@ -15043,7 +15038,6 @@ CLASS lcl_repo_srv IMPLEMENTATION.
METHOD refresh. METHOD refresh.
DATA: lt_list TYPE lcl_persistence_repo=>tt_repo, DATA: lt_list TYPE lcl_persistence_repo=>tt_repo,
lv_index TYPE i,
lo_online TYPE REF TO lcl_repo_online, lo_online TYPE REF TO lcl_repo_online,
lo_offline TYPE REF TO lcl_repo_offline. lo_offline TYPE REF TO lcl_repo_offline.
@ -15054,8 +15048,6 @@ CLASS lcl_repo_srv IMPLEMENTATION.
lt_list = go_persistence->list( ). lt_list = go_persistence->list( ).
LOOP AT lt_list ASSIGNING <ls_list>. LOOP AT lt_list ASSIGNING <ls_list>.
lv_index = sy-tabix.
IF iv_show_progress = abap_true. IF iv_show_progress = abap_true.
show_progress( iv_current = sy-tabix show_progress( iv_current = sy-tabix
iv_total = lines( lt_list ) iv_total = lines( lt_list )
@ -15065,13 +15057,11 @@ CLASS lcl_repo_srv IMPLEMENTATION.
IF <ls_list>-offline = abap_false. IF <ls_list>-offline = abap_false.
CREATE OBJECT lo_online CREATE OBJECT lo_online
EXPORTING EXPORTING
iv_key = lv_index
is_data = <ls_list>. is_data = <ls_list>.
APPEND lo_online TO gt_list. APPEND lo_online TO gt_list.
ELSE. ELSE.
CREATE OBJECT lo_offline CREATE OBJECT lo_offline
EXPORTING EXPORTING
iv_key = lv_index
is_data = <ls_list>. is_data = <ls_list>.
APPEND lo_offline TO gt_list. APPEND lo_offline TO gt_list.
ENDIF. ENDIF.
@ -15083,37 +15073,54 @@ CLASS lcl_repo_srv IMPLEMENTATION.
METHOD new_online. METHOD new_online.
DATA: ls_repo_persi TYPE lcl_persistence_repo=>ty_repo. DATA: ls_repo TYPE lcl_persistence_repo=>ty_repo,
lv_key TYPE lcl_persistence_repo=>ty_repo-key.
validate_package( iv_package ). validate_package( iv_package ).
ls_repo_persi-url = iv_url. lv_key = go_persistence->add(
ls_repo_persi-branch_name = iv_branch_name. iv_url = iv_url
ls_repo_persi-package = iv_package. iv_branch_name = iv_branch_name
iv_package = iv_package ).
TRY.
ls_repo = go_persistence->read( lv_key ).
CATCH lcx_not_found.
_raise 'new_online not found'.
ENDTRY.
CREATE OBJECT ro_repo CREATE OBJECT ro_repo
EXPORTING EXPORTING
iv_key = lines( gt_list ) + 1 is_data = ls_repo.
is_data = ls_repo_persi.
add( ro_repo ).
ENDMETHOD. "new_online ENDMETHOD. "new_online
METHOD new_offline. METHOD new_offline.
DATA: ls_repo_persi TYPE lcl_persistence_repo=>ty_repo. DATA: ls_repo TYPE lcl_persistence_repo=>ty_repo,
lv_key TYPE lcl_persistence_repo=>ty_repo-key.
validate_package( iv_package ). validate_package( iv_package ).
ls_repo_persi-url = iv_url. lv_key = go_persistence->add(
ls_repo_persi-package = iv_package. iv_url = iv_url
ls_repo_persi-offline = abap_true. iv_branch_name = ''
iv_package = iv_package
iv_offline = abap_true ).
TRY.
ls_repo = go_persistence->read( lv_key ).
CATCH lcx_not_found.
_raise 'new_offline not found'.
ENDTRY.
CREATE OBJECT ro_repo CREATE OBJECT ro_repo
EXPORTING EXPORTING
iv_key = lines( gt_list ) + 1 is_data = ls_repo.
is_data = ls_repo_persi.
add( ro_repo ). add( ro_repo ).
@ -15133,8 +15140,6 @@ CLASS lcl_repo_srv IMPLEMENTATION.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
io_repo->add( ).
APPEND io_repo TO gt_list. APPEND io_repo TO gt_list.
ENDMETHOD. "add ENDMETHOD. "add
@ -15735,11 +15740,11 @@ CLASS lcl_zip DEFINITION FINAL.
PUBLIC SECTION. PUBLIC SECTION.
CLASS-METHODS import CLASS-METHODS import
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_db=>ty_value
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS export_key CLASS-METHODS export_key
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_db=>ty_value
iv_zip TYPE abap_bool DEFAULT abap_true iv_zip TYPE abap_bool DEFAULT abap_true
RAISING lcx_exception. RAISING lcx_exception.
@ -16869,38 +16874,38 @@ CLASS lcl_gui_page_main DEFINITION FINAL.
CLASS-METHODS add CLASS-METHODS add
IMPORTING is_item TYPE ty_item IMPORTING is_item TYPE ty_item
iv_key TYPE lcl_repo=>ty_key iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS uninstall CLASS-METHODS uninstall
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS remove CLASS-METHODS remove
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS pull CLASS-METHODS pull
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS commit CLASS-METHODS commit
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS diff CLASS-METHODS diff
IMPORTING is_result TYPE lcl_file_status=>ty_result IMPORTING is_result TYPE lcl_file_status=>ty_result
iv_key TYPE lcl_repo=>ty_key iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS file_encode CLASS-METHODS file_encode
IMPORTING iv_key TYPE lcl_repo=>ty_key IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
is_file TYPE lcl_file_status=>ty_result is_file TYPE lcl_file_status=>ty_result
RETURNING VALUE(rv_string) TYPE string. RETURNING VALUE(rv_string) TYPE string.
CLASS-METHODS file_decode CLASS-METHODS file_decode
IMPORTING iv_string TYPE clike IMPORTING iv_string TYPE clike
EXPORTING ev_key TYPE lcl_repo=>ty_key EXPORTING ev_key TYPE lcl_persistence_repo=>ty_repo-key
es_file TYPE lcl_file_status=>ty_result es_file TYPE lcl_file_status=>ty_result
RAISING lcx_exception. RAISING lcx_exception.
@ -18062,7 +18067,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
DATA: ls_result TYPE lcl_file_status=>ty_result, DATA: ls_result TYPE lcl_file_status=>ty_result,
lv_url TYPE string, lv_url TYPE string,
lv_key TYPE lcl_repo=>ty_key, lv_key TYPE lcl_persistence_repo=>ty_repo-key,
ls_item TYPE ty_item, ls_item TYPE ty_item,
lo_db TYPE REF TO lcl_gui_page_db. lo_db TYPE REF TO lcl_gui_page_db.
@ -18142,6 +18147,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
lv_class TYPE string. lv_class TYPE string.
IF lines( it_list ) = 0.
RETURN.
ENDIF.
rv_html = '<div id="toc">' && gc_newline && rv_html = '<div id="toc">' && gc_newline &&
'<span class="menu">' && gc_newline. '<span class="menu">' && gc_newline.
@ -18167,17 +18176,31 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt, DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
lo_repo_online TYPE REF TO lcl_repo_online, lo_repo_online TYPE REF TO lcl_repo_online,
lo_repo_offline TYPE REF TO lcl_repo_offline, lo_repo_offline TYPE REF TO lcl_repo_offline,
lx_error TYPE REF TO lcx_exception,
lo_repo LIKE LINE OF lt_repos. lo_repo LIKE LINE OF lt_repos.
lt_repos = lcl_repo_srv=>list( ).
rv_html = lcl_gui=>header( ) && rv_html = lcl_gui=>header( ) &&
render_menu( ) && render_menu( ).
render_toc( lt_repos ).
TRY.
lt_repos = lcl_repo_srv=>list( ).
CATCH lcx_exception INTO lx_error.
* if wrong meta data exists in database, make sure to still render the menu
* where it is possible to use the database tool
rv_html = rv_html &&
'<div id="toc">Error:<br>' && gc_newline &&
lx_error->mv_text && gc_newline &&
'</div>' && gc_newline.
ENDTRY.
rv_html = rv_html && render_toc( lt_repos ).
IF lt_repos[] IS INITIAL. IF lt_repos[] IS INITIAL.
rv_html = rv_html && '<br><a href="sapevent:explore">Explore</a> new projects'. rv_html = rv_html &&
'<div id="toc">' && gc_newline &&
'<a href="sapevent:explore">Explore</a> new projects' && gc_newline &&
'</div>' && gc_newline.
ELSE. ELSE.
LOOP AT lt_repos INTO lo_repo. LOOP AT lt_repos INTO lo_repo.
IF lo_repo->is_offline( ) = abap_true. IF lo_repo->is_offline( ) = abap_true.
@ -19532,17 +19555,12 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
ls_repo-package = iv_package. ls_repo-package = iv_package.
ls_repo-offline = iv_offline. ls_repo-offline = iv_offline.
* prevent duplicates
TRY.
read( iv_url ).
_raise 'Repository already exists'.
CATCH lcx_not_found ##NO_HANDLER.
ENDTRY.
lv_repo_as_xml = to_xml( ls_repo ). lv_repo_as_xml = to_xml( ls_repo ).
rv_key = get_next_id( ).
mo_db->add( iv_type = c_type_repo mo_db->add( iv_type = c_type_repo
iv_value = get_next_id( ) iv_value = rv_key
iv_data = lv_repo_as_xml ). iv_data = lv_repo_as_xml ).
ENDMETHOD. ENDMETHOD.
@ -19550,7 +19568,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
METHOD delete. METHOD delete.
mo_db->delete( iv_type = c_type_repo mo_db->delete( iv_type = c_type_repo
iv_value = url_to_id( iv_url ) ). iv_value = iv_key ).
ENDMETHOD. ENDMETHOD.
@ -19565,17 +19583,19 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
_raise 'update, sha empty'. _raise 'update, sha empty'.
ENDIF. ENDIF.
ASSERT NOT iv_key IS INITIAL.
TRY. TRY.
ls_repo = read( iv_url ). ls_repo = read( iv_key ).
CATCH lcx_not_found. CATCH lcx_not_found.
_raise 'update repo not found'. _raise 'key not found'.
ENDTRY. ENDTRY.
ls_repo-sha1 = iv_branch_sha1. ls_repo-sha1 = iv_branch_sha1.
ls_content-data_str = to_xml( ls_repo ). ls_content-data_str = to_xml( ls_repo ).
mo_db->update( iv_type = c_type_repo mo_db->update( iv_type = c_type_repo
iv_value = url_to_id( iv_url ) iv_value = iv_key
iv_data = ls_content-data_str ). iv_data = ls_content-data_str ).
ENDMETHOD. ENDMETHOD.
@ -19586,7 +19606,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
lt_repo = list( ). lt_repo = list( ).
READ TABLE lt_repo INTO rs_repo WITH KEY url = iv_url. READ TABLE lt_repo INTO rs_repo WITH KEY key = iv_key.
IF sy-subrc <> 0. IF sy-subrc <> 0.
RAISE EXCEPTION TYPE lcx_not_found. RAISE EXCEPTION TYPE lcx_not_found.
ENDIF. ENDIF.
@ -19630,7 +19650,8 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
lt_content = mo_db->list_by_type( c_type_repo ). lt_content = mo_db->list_by_type( c_type_repo ).
LOOP AT lt_content INTO ls_content. LOOP AT lt_content INTO ls_content.
ls_repo = from_xml( ls_content-data_str ). MOVE-CORRESPONDING from_xml( ls_content-data_str ) TO ls_repo.
ls_repo-key = ls_content-value.
INSERT ls_repo INTO TABLE rt_repos. INSERT ls_repo INTO TABLE rt_repos.
ENDLOOP. ENDLOOP.
@ -19648,32 +19669,17 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD to_xml. METHOD to_xml.
DATA: ls_xml TYPE ty_repo_xml.
MOVE-CORRESPONDING is_repo TO ls_xml.
CALL TRANSFORMATION id CALL TRANSFORMATION id
SOURCE (c_type_repo) = is_repo SOURCE (c_type_repo) = ls_xml
RESULT XML rv_repo_xml_string. RESULT XML rv_repo_xml_string.
ENDMETHOD. ENDMETHOD.
METHOD url_to_id.
DATA: lt_content TYPE lcl_persistence_db=>tt_content,
ls_content LIKE LINE OF lt_content,
ls_repo TYPE ty_repo.
lt_content = mo_db->list_by_type( c_type_repo ).
LOOP AT lt_content INTO ls_content.
ls_repo = from_xml( ls_content-data_str ).
IF ls_repo-url = iv_url.
rv_id = ls_content-value.
RETURN.
ENDIF.
ENDLOOP.
_raise 'Repo, error finding id for url'.
ENDMETHOD.
METHOD constructor. METHOD constructor.
CREATE OBJECT mo_db. CREATE OBJECT mo_db.
ENDMETHOD. ENDMETHOD.
@ -19682,7 +19688,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION.
mo_db->lock( iv_mode = iv_mode mo_db->lock( iv_mode = iv_mode
iv_type = c_type_repo iv_type = c_type_repo
iv_value = url_to_id( iv_url ) ). iv_value = iv_key ).
ENDMETHOD. ENDMETHOD.