[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,
lines TYPE tlinetab,
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.

View File

@ -2,6 +2,19 @@ CLASS zcl_abapgit_object_intf DEFINITION PUBLIC FINAL INHERITING FROM zcl_abapgi
PUBLIC SECTION.
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
IMPORTING
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 .
METHODS serialize_docu
IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output
!it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL
!iv_clsname TYPE seoclsname
!ii_xml TYPE REF TO zif_abapgit_xml_output
!it_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus OPTIONAL
!iv_clsname TYPE seoclsname
RETURNING VALUE(rs_docu) TYPE ty_docu
RAISING
zcx_abapgit_exception.
zcx_abapgit_exception.
METHODS serialize_descr
IMPORTING
!ii_xml TYPE REF TO zif_abapgit_xml_output
!iv_clsname TYPE seoclsname
!ii_xml TYPE REF TO zif_abapgit_xml_output
!iv_clsname TYPE seoclsname
RETURNING VALUE(rs_description) TYPE ty_intf-description
RAISING
zcx_abapgit_exception.
zcx_abapgit_exception.
PRIVATE SECTION.
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.
ENDIF.
ii_xml->add( iv_name = 'DESCRIPTIONS'
ig_data = lt_descriptions ).
rs_description = lt_descriptions.
ENDMETHOD.
@ -243,10 +257,8 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
iv_id = 'IF'
iv_object_name = lv_object
iv_language = mv_language ).
IF lines( lt_lines ) > 0.
ii_xml->add( iv_name = 'LINES'
ig_data = lt_lines ).
ENDIF.
rs_docu-lines = lt_lines.
IF ii_xml->i18n_params( )-main_language_only = abap_true.
RETURN.
@ -268,10 +280,7 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
ENDLOOP.
IF lines( lt_i18n_lines ) > 0.
ii_xml->add( iv_name = 'I18N_LINES'
ig_data = lt_i18n_lines ).
ENDIF.
rs_docu-i18n_lines = lt_i18n_lines.
ENDMETHOD.
@ -279,26 +288,23 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
METHOD serialize_xml.
DATA:
ls_vseointerf TYPE vseointerf,
ls_intf TYPE ty_intf,
ls_clskey TYPE seoclskey,
lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus.
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,
ls_vseointerf-author,
ls_vseointerf-createdon,
ls_vseointerf-changedby,
ls_vseointerf-changedon,
ls_vseointerf-chgdanyby,
ls_vseointerf-chgdanyon,
ls_vseointerf-r3release,
ls_vseointerf-version.
io_xml->add( iv_name = 'VSEOINTERF'
ig_data = ls_vseointerf ).
CLEAR: ls_intf-vseointerf-uuid,
ls_intf-vseointerf-author,
ls_intf-vseointerf-createdon,
ls_intf-vseointerf-changedby,
ls_intf-vseointerf-changedon,
ls_intf-vseointerf-chgdanyby,
ls_intf-vseointerf-chgdanyon,
ls_intf-vseointerf-r3release,
ls_intf-vseointerf-version.
" Select all active translations of documentation
" Skip main language - it was already serialized
@ -309,12 +315,23 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
AND object = ls_clskey-clsname
AND langu <> mv_language.
serialize_docu( ii_xml = io_xml
ls_intf-docu = serialize_docu(
ii_xml = io_xml
iv_clsname = ls_clskey-clsname
it_langu_additional = lt_langu_additional ).
serialize_descr( ii_xml = io_xml
iv_clsname = ls_clskey-clsname ).
ls_intf-description = serialize_descr( ii_xml = io_xml
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.