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 122 123 124 125 126 | 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_persist_packages DEFINITION
PUBLIC
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_persist_factory.
PUBLIC SECTION.
INTERFACES zif_abapgit_persist_packages.
METHODS init.
PROTECTED SECTION.
PRIVATE SECTION.
DATA mt_packages TYPE zif_abapgit_persist_packages=>ty_packages.
METHODS from_xml
IMPORTING
iv_xml TYPE string
RETURNING
VALUE(rt_packages) TYPE zif_abapgit_persist_packages=>ty_packages
RAISING
zcx_abapgit_exception.
METHODS to_xml
IMPORTING
it_packages TYPE zif_abapgit_persist_packages=>ty_packages
RETURNING
VALUE(rv_xml) TYPE string
RAISING
zcx_abapgit_exception.
ENDCLASS.
CLASS zcl_abapgit_persist_packages IMPLEMENTATION.
METHOD from_xml.
DATA lo_input TYPE REF TO zif_abapgit_xml_input.
CREATE OBJECT lo_input TYPE zcl_abapgit_xml_input EXPORTING iv_xml = iv_xml.
lo_input->read(
EXPORTING
iv_name = zcl_abapgit_persistence_db=>c_type_packages
CHANGING
cg_data = rt_packages ).
ENDMETHOD.
METHOD init.
TRY.
" Might have changed in another session so always get latest
mt_packages = from_xml( zcl_abapgit_persistence_db=>get_instance( )->read(
iv_type = zcl_abapgit_persistence_db=>c_type_packages
iv_value = '' ) ).
CATCH zcx_abapgit_exception zcx_abapgit_not_found ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
METHOD to_xml.
DATA li_output TYPE REF TO zif_abapgit_xml_output.
CREATE OBJECT li_output TYPE zcl_abapgit_xml_output.
li_output->add(
iv_name = zcl_abapgit_persistence_db=>c_type_packages
ig_data = it_packages ).
rv_xml = li_output->render( ).
ENDMETHOD.
METHOD zif_abapgit_persist_packages~modify.
DATA ls_package LIKE LINE OF mt_packages.
FIELD-SYMBOLS <ls_package> LIKE LINE OF mt_packages.
init( ).
IF iv_component IS INITIAL AND iv_comp_posid IS INITIAL.
DELETE mt_packages WHERE devclass = iv_package.
ELSE.
READ TABLE mt_packages ASSIGNING <ls_package> WITH TABLE KEY devclass = iv_package.
IF sy-subrc = 0.
<ls_package>-component = iv_component.
<ls_package>-comp_posid = iv_comp_posid.
ELSE.
ls_package-devclass = iv_package.
ls_package-component = iv_component.
ls_package-comp_posid = iv_comp_posid.
INSERT ls_package INTO TABLE mt_packages.
ENDIF.
ENDIF.
zcl_abapgit_persistence_db=>get_instance( )->modify(
iv_type = zcl_abapgit_persistence_db=>c_type_packages
iv_value = ''
iv_data = to_xml( mt_packages ) ).
COMMIT WORK AND WAIT.
ENDMETHOD.
METHOD zif_abapgit_persist_packages~read.
init( ).
READ TABLE mt_packages INTO rs_package WITH TABLE KEY devclass = iv_package.
IF sy-subrc <> 0.
rs_package-devclass = iv_package. " no component
ENDIF.
ENDMETHOD.
ENDCLASS.
|