Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | CLASS zcl_abapgit_repo_cs_migration DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS run
RAISING
zcx_abapgit_exception
zcx_abapgit_not_found.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
ty_repo_ids TYPE SORTED TABLE OF zif_abapgit_persistence=>ty_repo-key WITH UNIQUE KEY table_line.
CLASS-METHODS get_unconverted_repo_ids
RETURNING
VALUE(rt_repo_ids) TYPE ty_repo_ids.
CLASS-METHODS clear_repo_metadata
IMPORTING
iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_not_found.
CLASS-METHODS convert_checksums
IMPORTING
iv_repo_key TYPE zif_abapgit_persistence=>ty_repo-key
RAISING
zcx_abapgit_exception
zcx_abapgit_not_found.
ENDCLASS.
CLASS zcl_abapgit_repo_cs_migration IMPLEMENTATION.
METHOD clear_repo_metadata.
DATA lo_repo_persistence TYPE REF TO zcl_abapgit_persistence_repo.
lo_repo_persistence ?= zcl_abapgit_persist_factory=>get_repo( ).
lo_repo_persistence->rewrite_repo_meta( iv_repo_key ).
ENDMETHOD.
METHOD convert_checksums.
DATA lo_cs TYPE REF TO zcl_abapgit_repo_checksums.
DATA lv_xml TYPE zif_abapgit_persistence=>ty_content-data_str.
DATA li_repo TYPE REF TO zif_abapgit_repo.
DATA:
BEGIN OF ls_repo_extract,
local_checksums TYPE zif_abapgit_persistence=>ty_local_checksum_tt,
END OF ls_repo_extract.
lv_xml = zcl_abapgit_persistence_db=>get_instance( )->read(
iv_type = zcl_abapgit_persistence_db=>c_type_repo
iv_value = iv_repo_key ).
REPLACE ALL OCCURRENCES OF '<_--28C_TYPE_REPO_--29>' IN lv_xml WITH '<REPO>'.
REPLACE ALL OCCURRENCES OF '</_--28C_TYPE_REPO_--29>' IN lv_xml WITH '</REPO>'.
CALL TRANSFORMATION id
OPTIONS value_handling = 'accept_data_loss'
SOURCE XML lv_xml
RESULT repo = ls_repo_extract.
IF lines( ls_repo_extract-local_checksums ) = 0.
RETURN.
ENDIF.
li_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_repo_key ).
CREATE OBJECT lo_cs EXPORTING ii_repo = li_repo.
lo_cs->force_write( ls_repo_extract-local_checksums ).
ENDMETHOD.
METHOD get_unconverted_repo_ids.
DATA lt_cs_ids TYPE ty_repo_ids.
DATA lv_repo_id LIKE LINE OF rt_repo_ids.
DATA lv_index TYPE i.
SELECT value FROM (zcl_abapgit_persistence_db=>c_tabname)
INTO TABLE rt_repo_ids
WHERE type = zcl_abapgit_persistence_db=>c_type_repo.
SELECT value FROM (zcl_abapgit_persistence_db=>c_tabname)
INTO TABLE lt_cs_ids
WHERE type = zcl_abapgit_persistence_db=>c_type_repo_csum.
LOOP AT rt_repo_ids INTO lv_repo_id.
lv_index = sy-tabix.
READ TABLE lt_cs_ids TRANSPORTING NO FIELDS WITH KEY table_line = lv_repo_id.
IF sy-subrc = 0. " Already converted
DELETE rt_repo_ids INDEX lv_index.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD run.
DATA lt_repo_ids TYPE ty_repo_ids.
DATA lv_repo_id LIKE LINE OF lt_repo_ids.
lt_repo_ids = get_unconverted_repo_ids( ).
LOOP AT lt_repo_ids INTO lv_repo_id.
convert_checksums( lv_repo_id ).
clear_repo_metadata( lv_repo_id ).
ENDLOOP.
ENDMETHOD.
ENDCLASS.
|