[Refac] Object handler for INTF (serialize) (#5668)

This commit is contained in:
Albert Mink 2022-06-30 11:51:41 +02:00 committed by GitHub
parent 01297df9a5
commit eb2ae98c6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 35 deletions

View File

@ -11,7 +11,7 @@ INTERFACE zif_abapgit_lang_definitions
language TYPE langu, language TYPE langu,
lines TYPE tlinetab, lines TYPE tlinetab,
END OF ty_i18n_line, END OF ty_i18n_line,
ty_i18n_lines TYPE STANDARD TABLE OF ty_i18n_line. ty_i18n_lines TYPE STANDARD TABLE OF ty_i18n_line WITH KEY language.
TYPES: ty_langus TYPE STANDARD TABLE OF langu. TYPES: ty_langus TYPE STANDARD TABLE OF langu.

View File

@ -2,6 +2,19 @@ CLASS zcl_abapgit_object_intf DEFINITION PUBLIC FINAL INHERITING FROM zcl_abapgi
PUBLIC SECTION. PUBLIC SECTION.
INTERFACES zif_abapgit_object. INTERFACES zif_abapgit_object.
TYPES:
BEGIN OF ty_docu,
lines TYPE tlinetab,
i18n_lines TYPE zif_abapgit_lang_definitions=>ty_i18n_lines,
END OF ty_docu.
TYPES:
BEGIN OF ty_intf,
vseointerf TYPE vseointerf,
docu TYPE ty_docu,
description TYPE zif_abapgit_oo_object_fnc=>ty_seocompotx_tt,
END OF ty_intf.
METHODS constructor METHODS constructor
IMPORTING IMPORTING
is_item TYPE zif_abapgit_definitions=>ty_item is_item TYPE zif_abapgit_definitions=>ty_item
@ -26,17 +39,19 @@ CLASS zcl_abapgit_object_intf DEFINITION PUBLIC FINAL INHERITING FROM zcl_abapgi
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS serialize_docu METHODS serialize_docu
IMPORTING IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output !ii_xml TYPE REF TO zif_abapgit_xml_output
!it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL !it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL
!iv_clsname TYPE seoclsname !iv_clsname TYPE seoclsname
RETURNING VALUE(rs_docu) TYPE ty_docu
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS serialize_descr METHODS serialize_descr
IMPORTING IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output !ii_xml TYPE REF TO zif_abapgit_xml_output
!iv_clsname TYPE seoclsname !iv_clsname TYPE seoclsname
RETURNING VALUE(rs_description) TYPE ty_intf-description
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
PRIVATE SECTION. PRIVATE SECTION.
DATA mi_object_oriented_object_fct TYPE REF TO zif_abapgit_oo_object_fnc . DATA mi_object_oriented_object_fct TYPE REF TO zif_abapgit_oo_object_fnc .
@ -223,8 +238,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
ii_xml->add( iv_name = 'DESCRIPTIONS' rs_description = lt_descriptions.
ig_data = lt_descriptions ).
ENDMETHOD. ENDMETHOD.
@ -243,10 +257,8 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
iv_id = 'IF' iv_id = 'IF'
iv_object_name = lv_object iv_object_name = lv_object
iv_language = mv_language ). iv_language = mv_language ).
IF lines( lt_lines ) > 0.
ii_xml->add( iv_name = 'LINES' rs_docu-lines = lt_lines.
ig_data = lt_lines ).
ENDIF.
IF ii_xml->i18n_params( )-main_language_only = abap_true. IF ii_xml->i18n_params( )-main_language_only = abap_true.
RETURN. RETURN.
@ -268,10 +280,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
ENDLOOP. ENDLOOP.
IF lines( lt_i18n_lines ) > 0. rs_docu-i18n_lines = lt_i18n_lines.
ii_xml->add( iv_name = 'I18N_LINES'
ig_data = lt_i18n_lines ).
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -279,26 +288,23 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
METHOD serialize_xml. METHOD serialize_xml.
DATA: DATA:
ls_vseointerf TYPE vseointerf, ls_intf TYPE ty_intf,
ls_clskey TYPE seoclskey, ls_clskey TYPE seoclskey,
lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus. lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus.
ls_clskey-clsname = ms_item-obj_name. ls_clskey-clsname = ms_item-obj_name.
ls_vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ). ls_intf-vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ).
CLEAR: ls_vseointerf-uuid, CLEAR: ls_intf-vseointerf-uuid,
ls_vseointerf-author, ls_intf-vseointerf-author,
ls_vseointerf-createdon, ls_intf-vseointerf-createdon,
ls_vseointerf-changedby, ls_intf-vseointerf-changedby,
ls_vseointerf-changedon, ls_intf-vseointerf-changedon,
ls_vseointerf-chgdanyby, ls_intf-vseointerf-chgdanyby,
ls_vseointerf-chgdanyon, ls_intf-vseointerf-chgdanyon,
ls_vseointerf-r3release, ls_intf-vseointerf-r3release,
ls_vseointerf-version. ls_intf-vseointerf-version.
io_xml->add( iv_name = 'VSEOINTERF'
ig_data = ls_vseointerf ).
" Select all active translations of documentation " Select all active translations of documentation
" Skip main language - it was already serialized " Skip main language - it was already serialized
@ -309,12 +315,23 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
AND object = ls_clskey-clsname AND object = ls_clskey-clsname
AND langu <> mv_language. AND langu <> mv_language.
serialize_docu( ii_xml = io_xml ls_intf-docu = serialize_docu(
ii_xml = io_xml
iv_clsname = ls_clskey-clsname iv_clsname = ls_clskey-clsname
it_langu_additional = lt_langu_additional ). it_langu_additional = lt_langu_additional ).
serialize_descr( ii_xml = io_xml ls_intf-description = serialize_descr( ii_xml = io_xml
iv_clsname = ls_clskey-clsname ). iv_clsname = ls_clskey-clsname ).
" HERE: switch with feature flag for XML or JSON file format
io_xml->add( iv_name = 'VSEOINTERF'
ig_data = ls_intf-vseointerf ).
io_xml->add( iv_name = 'DESCRIPTIONS'
ig_data = ls_intf-description ).
io_xml->add( iv_name = 'LINES'
ig_data = ls_intf-docu-lines ).
io_xml->add( iv_name = 'I18N_LINES'
ig_data = ls_intf-docu-i18n_lines ).
ENDMETHOD. ENDMETHOD.