mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Translation for INTF in AFF (#6774)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
5eec8f264e
commit
a7f9ceedea
39
src/objects/aff/zcl_abapgit_json_path.clas.abap
Normal file
39
src/objects/aff/zcl_abapgit_json_path.clas.abap
Normal file
|
@ -0,0 +1,39 @@
|
|||
CLASS zcl_abapgit_json_path DEFINITION PUBLIC CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
METHODS: serialize
|
||||
IMPORTING iv_json TYPE string
|
||||
RETURNING VALUE(rt_result) TYPE string_table
|
||||
RAISING zcx_abapgit_exception.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_json_path IMPLEMENTATION.
|
||||
|
||||
METHOD serialize.
|
||||
DATA: lo_json_path TYPE REF TO lcl_json_path,
|
||||
lv_json_xstring TYPE xstring,
|
||||
lt_root_path TYPE string_table,
|
||||
lo_reader TYPE REF TO if_sxml_reader,
|
||||
lx_parse_error TYPE REF TO cx_sxml_parse_error.
|
||||
|
||||
lv_json_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( iv_json ).
|
||||
lo_reader = cl_sxml_string_reader=>create( input = lv_json_xstring ).
|
||||
|
||||
TRY.
|
||||
IF lo_reader->read_next_node( ) IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
CATCH cx_sxml_parse_error INTO lx_parse_error.
|
||||
zcx_abapgit_exception=>raise_with_text( lx_parse_error ).
|
||||
ENDTRY.
|
||||
|
||||
APPEND `$` TO lt_root_path.
|
||||
|
||||
CREATE OBJECT lo_json_path.
|
||||
lo_json_path->serialize_rec( EXPORTING io_reader = lo_reader
|
||||
it_path = lt_root_path
|
||||
CHANGING ct_json_paths = rt_result ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
182
src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap
Normal file
182
src/objects/aff/zcl_abapgit_json_path.clas.locals_imp.abap
Normal file
|
@ -0,0 +1,182 @@
|
|||
*"* use this source file for the definition and implementation of
|
||||
*"* local helper classes, interface definitions and type
|
||||
*"* declarations
|
||||
|
||||
CLASS lcl_json_path DEFINITION CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
serialize_rec
|
||||
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||
it_path TYPE string_table
|
||||
CHANGING ct_json_paths TYPE string_table.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS:
|
||||
is_array
|
||||
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||
RETURNING VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS:
|
||||
is_string_open
|
||||
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||
RETURNING VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS:
|
||||
is_object
|
||||
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||
RETURNING VALUE(rv_result) TYPE abap_bool.
|
||||
METHODS:
|
||||
serialize_rec_array
|
||||
IMPORTING io_reader TYPE REF TO if_sxml_reader
|
||||
it_path TYPE string_table
|
||||
CHANGING ct_json_paths TYPE string_table.
|
||||
METHODS:
|
||||
get_json_path
|
||||
IMPORTING it_path TYPE string_table
|
||||
RETURNING VALUE(rv_result) TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_json_path IMPLEMENTATION.
|
||||
|
||||
METHOD is_array.
|
||||
rv_result = boolc( io_reader->name = 'array' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_string_open.
|
||||
rv_result = boolc( io_reader->name = 'str' AND io_reader->node_type = if_sxml_node=>co_nt_element_open ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_object.
|
||||
rv_result = boolc( io_reader->name = 'object' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD serialize_rec.
|
||||
DATA: lt_new_path TYPE string_table,
|
||||
lv_key TYPE string.
|
||||
|
||||
lt_new_path = it_path.
|
||||
|
||||
IF io_reader->read_next_node( ) IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF is_string_open( io_reader ) = abap_true.
|
||||
|
||||
APPEND io_reader->value TO lt_new_path.
|
||||
lv_key = get_json_path( lt_new_path ).
|
||||
|
||||
io_reader->read_next_node( ).
|
||||
lv_key = |{ lv_key }={ io_reader->value }|.
|
||||
APPEND lv_key TO ct_json_paths.
|
||||
|
||||
io_reader->read_next_node( ).
|
||||
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||
|
||||
serialize_rec( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ELSEIF is_object( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||
|
||||
APPEND io_reader->value TO lt_new_path.
|
||||
serialize_rec( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ELSEIF is_array( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||
|
||||
APPEND io_reader->value TO lt_new_path.
|
||||
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ELSEIF ( is_object( io_reader ) = abap_true OR is_array( io_reader ) = abap_true )
|
||||
AND io_reader->node_type = if_sxml_node=>co_nt_element_close.
|
||||
|
||||
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||
serialize_rec( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD serialize_rec_array.
|
||||
DATA: lt_new_path TYPE string_table,
|
||||
lv_json_path TYPE string,
|
||||
lv_array_key TYPE string.
|
||||
|
||||
lt_new_path = it_path.
|
||||
|
||||
IF io_reader->read_next_node( ) IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF is_string_open( io_reader ) = abap_true.
|
||||
|
||||
APPEND io_reader->value TO lt_new_path.
|
||||
lv_json_path = get_json_path( lt_new_path ).
|
||||
|
||||
io_reader->read_next_node( ).
|
||||
lv_json_path = |{ lv_json_path }={ io_reader->value }|.
|
||||
APPEND lv_json_path TO ct_json_paths.
|
||||
io_reader->read_next_node( ).
|
||||
|
||||
serialize_rec( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ELSEIF is_object( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||
|
||||
io_reader->read_next_node( ).
|
||||
lv_array_key = io_reader->value.
|
||||
io_reader->read_next_node( ).
|
||||
lv_array_key = |[?(@.{ lv_array_key }=='{ io_reader->value }')]|.
|
||||
APPEND lv_array_key TO lt_new_path.
|
||||
io_reader->read_next_node( ).
|
||||
|
||||
io_reader->read_next_node( ).
|
||||
APPEND io_reader->value TO lt_new_path.
|
||||
lv_json_path = get_json_path( lt_new_path ).
|
||||
|
||||
io_reader->read_next_node( ).
|
||||
lv_json_path = |{ lv_json_path }={ io_reader->value }|.
|
||||
APPEND lv_json_path TO ct_json_paths.
|
||||
io_reader->read_next_node( ).
|
||||
|
||||
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ELSEIF is_array( io_reader ) = abap_true AND io_reader->node_type = if_sxml_node=>co_nt_element_open.
|
||||
|
||||
APPEND io_reader->value TO lt_new_path.
|
||||
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ELSEIF ( is_object( io_reader ) = abap_true OR is_array( io_reader ) = abap_true )
|
||||
AND io_reader->node_type = if_sxml_node=>co_nt_element_close.
|
||||
|
||||
DELETE lt_new_path INDEX lines( lt_new_path ).
|
||||
serialize_rec_array( EXPORTING io_reader = io_reader
|
||||
it_path = lt_new_path
|
||||
CHANGING ct_json_paths = ct_json_paths ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_json_path.
|
||||
rv_result = concat_lines_of( table = it_path
|
||||
sep = `.` ).
|
||||
REPLACE ALL OCCURRENCES OF `.[` IN rv_result WITH `[`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
142
src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap
Normal file
142
src/objects/aff/zcl_abapgit_json_path.clas.testclasses.abap
Normal file
|
@ -0,0 +1,142 @@
|
|||
CLASS ltcl_json_path DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mt_act TYPE string_table,
|
||||
mt_exp TYPE string_table,
|
||||
ms_data TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||
METHODS:
|
||||
flat_structure FOR TESTING RAISING cx_static_check,
|
||||
array FOR TESTING RAISING cx_static_check,
|
||||
array_nested FOR TESTING RAISING cx_static_check.
|
||||
METHODS:
|
||||
serialize
|
||||
IMPORTING is_data TYPE zif_abapgit_aff_intf_v1=>ty_main
|
||||
RETURNING VALUE(rt_result) TYPE string_table
|
||||
RAISING zcx_abapgit_ajson_error
|
||||
zcx_abapgit_exception.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_json_path IMPLEMENTATION.
|
||||
|
||||
METHOD serialize.
|
||||
DATA:
|
||||
lo_ajson TYPE REF TO zif_abapgit_ajson,
|
||||
lo_cut TYPE REF TO zcl_abapgit_json_path.
|
||||
|
||||
|
||||
lo_ajson = zcl_abapgit_ajson=>new( iv_keep_item_order = abap_true
|
||||
)->set( iv_path = '/'
|
||||
iv_val = is_data
|
||||
)->map( zcl_abapgit_ajson_mapping=>create_to_camel_case( )
|
||||
)->filter( zcl_abapgit_ajson_filter_lib=>create_empty_filter( ) ).
|
||||
|
||||
lo_ajson->delete( '/category/' ).
|
||||
lo_ajson->delete( '/proxy/' ).
|
||||
|
||||
CREATE OBJECT lo_cut.
|
||||
rt_result = lo_cut->serialize( lo_ajson->stringify( ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD flat_structure.
|
||||
DATA lv_header_descr TYPE string.
|
||||
lv_header_descr = `$.header.description=Text`.
|
||||
|
||||
ms_data-header-description = 'Text'.
|
||||
|
||||
mt_act = serialize( ms_data ).
|
||||
APPEND lv_header_descr TO mt_exp.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = mt_exp
|
||||
act = mt_act ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD array.
|
||||
DATA lv_header_descr TYPE string.
|
||||
DATA lv_descr_meth_1 TYPE string.
|
||||
DATA lv_descr_meth_2 TYPE string.
|
||||
DATA ls_meth_desc TYPE zif_abapgit_aff_oo_types_v1=>ty_method.
|
||||
|
||||
lv_header_descr = `$.header.description=Text`.
|
||||
lv_descr_meth_1 = `$.descriptions.methods[?(@.name=='METH1')].description=Sonne`.
|
||||
lv_descr_meth_2 = `$.descriptions.methods[?(@.name=='METH2')].description=Mond`.
|
||||
|
||||
APPEND lv_header_descr TO mt_exp.
|
||||
APPEND lv_descr_meth_1 TO mt_exp.
|
||||
APPEND lv_descr_meth_2 TO mt_exp.
|
||||
|
||||
|
||||
ms_data-header-description = 'Text'.
|
||||
|
||||
ls_meth_desc-name = `METH1`.
|
||||
ls_meth_desc-description = `Sonne`.
|
||||
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||
CLEAR ls_meth_desc.
|
||||
ls_meth_desc-name = `METH2`.
|
||||
ls_meth_desc-description = `Mond`.
|
||||
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||
|
||||
|
||||
mt_act = serialize( ms_data ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = mt_exp
|
||||
act = mt_act ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD array_nested.
|
||||
DATA lv_header_descr TYPE string.
|
||||
DATA lv_descr_meth_1 TYPE string.
|
||||
DATA lv_descr_meth_1_param_1 TYPE string.
|
||||
DATA lv_descr_meth_1_param_2 TYPE string.
|
||||
DATA lv_descr_meth_2 TYPE string.
|
||||
DATA ls_meth_desc TYPE zif_abapgit_aff_oo_types_v1=>ty_method.
|
||||
DATA ls_meth_param TYPE zif_abapgit_aff_oo_types_v1=>ty_component_description.
|
||||
|
||||
lv_header_descr = `$.header.description=Text`.
|
||||
lv_descr_meth_1 = `$.descriptions.methods[?(@.name=='METH1')].description=Sonne`.
|
||||
lv_descr_meth_1_param_1 =
|
||||
`$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param1')].description=Parameter A`.
|
||||
lv_descr_meth_1_param_2 =
|
||||
`$.descriptions.methods[?(@.name=='METH1')].parameters[?(@.name=='param2')].description=Parameter B`.
|
||||
lv_descr_meth_2 = `$.descriptions.methods[?(@.name=='METH2')].description=Mond`.
|
||||
|
||||
APPEND lv_header_descr TO mt_exp.
|
||||
APPEND lv_descr_meth_1 TO mt_exp.
|
||||
APPEND lv_descr_meth_1_param_1 TO mt_exp.
|
||||
APPEND lv_descr_meth_1_param_2 TO mt_exp.
|
||||
APPEND lv_descr_meth_2 TO mt_exp.
|
||||
|
||||
|
||||
|
||||
ls_meth_param-name = 'param1'.
|
||||
ls_meth_param-description = 'Parameter A'.
|
||||
APPEND ls_meth_param TO ls_meth_desc-parameters.
|
||||
|
||||
ls_meth_param-name = 'param2'.
|
||||
ls_meth_param-description = 'Parameter B'.
|
||||
APPEND ls_meth_param TO ls_meth_desc-parameters.
|
||||
|
||||
ls_meth_desc-name = `METH1`.
|
||||
ls_meth_desc-description = `Sonne`.
|
||||
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||
CLEAR ls_meth_desc.
|
||||
|
||||
ls_meth_desc-name = `METH2`.
|
||||
ls_meth_desc-description = `Mond`.
|
||||
APPEND ls_meth_desc TO ms_data-descriptions-methods.
|
||||
|
||||
ms_data-header-description = 'Text'.
|
||||
|
||||
mt_act = serialize( ms_data ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = mt_exp
|
||||
act = mt_act ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/objects/aff/zcl_abapgit_json_path.clas.xml
Normal file
17
src/objects/aff/zcl_abapgit_json_path.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_JSON_PATH</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit - de-/serializes JSON string to JSON paths</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
70
src/objects/texts/zcl_abapgit_properties_file.clas.abap
Normal file
70
src/objects/texts/zcl_abapgit_properties_file.clas.abap
Normal file
|
@ -0,0 +1,70 @@
|
|||
CLASS zcl_abapgit_properties_file DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES zif_abapgit_i18n_file.
|
||||
|
||||
CONSTANTS:
|
||||
c_properties_feature TYPE string VALUE 'TRANSL'.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING iv_lang TYPE laiso.
|
||||
|
||||
METHODS push_text_pairs
|
||||
IMPORTING it_translation TYPE string_table.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
DATA mv_lang TYPE laiso.
|
||||
DATA mt_translation TYPE string_table.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_properties_file IMPLEMENTATION.
|
||||
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
mv_lang = to_lower( iv_lang ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD push_text_pairs.
|
||||
mt_translation = it_translation.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_i18n_file~ext.
|
||||
rv_ext = 'properties'.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_i18n_file~lang.
|
||||
rv_lang = mv_lang.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_i18n_file~render.
|
||||
DATA: lv_translation TYPE string,
|
||||
lo_buf TYPE REF TO zcl_abapgit_string_buffer,
|
||||
lv_str TYPE string.
|
||||
|
||||
lv_translation = concat_lines_of( table = mt_translation
|
||||
sep = cl_abap_char_utilities=>newline ).
|
||||
CREATE OBJECT lo_buf.
|
||||
lo_buf->add( lv_translation ).
|
||||
|
||||
lv_str = lo_buf->join_w_newline_and_flush( ) && cl_abap_char_utilities=>newline.
|
||||
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8_bom( lv_str ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_i18n_file~translate.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/objects/texts/zcl_abapgit_properties_file.clas.xml
Normal file
16
src/objects/texts/zcl_abapgit_properties_file.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_PROPERTIES_FILE</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abapGit - Properties file serializer</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -392,7 +392,9 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
ls_intf TYPE ty_intf,
|
||||
ls_clskey TYPE seoclskey,
|
||||
lv_serialized_data TYPE xstring,
|
||||
lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus.
|
||||
lt_langu_additional TYPE zif_abapgit_lang_definitions=>ty_langus,
|
||||
lt_i18n_file TYPE zif_abapgit_i18n_file=>ty_table_of,
|
||||
lo_i18n_file TYPE REF TO zif_abapgit_i18n_file.
|
||||
|
||||
ls_clskey-clsname = ms_item-obj_name.
|
||||
|
||||
|
@ -422,7 +424,13 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
lv_serialized_data = lcl_aff_metadata_handler=>serialize( ls_intf ).
|
||||
mo_files->add_raw( iv_ext = 'json'
|
||||
iv_data = lv_serialized_data ).
|
||||
lt_i18n_file = lcl_aff_metadata_handler=>serialize_translations(
|
||||
is_intf = ls_intf
|
||||
it_language = mo_i18n_params->ms_params-translation_languages ).
|
||||
|
||||
LOOP AT lt_i18n_file INTO lo_i18n_file.
|
||||
mo_files->add_i18n_file( lo_i18n_file ).
|
||||
ENDLOOP.
|
||||
ELSE.
|
||||
io_xml->add( iv_name = 'VSEOINTERF'
|
||||
ig_data = ls_intf-vseointerf ).
|
||||
|
|
|
@ -502,6 +502,11 @@ CLASS lcl_aff_metadata_handler DEFINITION.
|
|||
IMPORTING is_intf TYPE zcl_abapgit_object_intf=>ty_intf
|
||||
RETURNING VALUE(rv_result) TYPE xstring
|
||||
RAISING zcx_abapgit_exception.
|
||||
CLASS-METHODS serialize_translations
|
||||
IMPORTING is_intf TYPE zcl_abapgit_object_intf=>ty_intf
|
||||
it_language TYPE zif_abapgit_definitions=>ty_languages
|
||||
RETURNING VALUE(rt_result) TYPE zif_abapgit_i18n_file=>ty_table_of
|
||||
RAISING zcx_abapgit_exception.
|
||||
CLASS-METHODS deserialize
|
||||
IMPORTING iv_data TYPE xstring
|
||||
RETURNING VALUE(rv_result) TYPE zif_abapgit_aff_intf_v1=>ty_main
|
||||
|
@ -515,7 +520,11 @@ CLASS lcl_aff_metadata_handler DEFINITION.
|
|||
"! For serialization
|
||||
"! @parameter rt_result | Paths that will not be serialized (depending on value)
|
||||
get_paths_to_skip
|
||||
RETURNING VALUE(rt_result) TYPE zcl_abapgit_json_handler=>ty_skip_paths.
|
||||
RETURNING VALUE(rt_result) TYPE zcl_abapgit_json_handler=>ty_skip_paths,
|
||||
fill_translation
|
||||
IMPORTING iv_name TYPE seoclsname
|
||||
iv_language TYPE laiso
|
||||
RETURNING VALUE(rt_result) TYPE zif_abapgit_aff_intf_v1=>ty_main.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
||||
|
@ -621,4 +630,65 @@ CLASS lcl_aff_metadata_handler IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD serialize_translations.
|
||||
DATA: ls_data TYPE zif_abapgit_aff_intf_v1=>ty_main,
|
||||
lv_langu TYPE laiso,
|
||||
lv_json TYPE string,
|
||||
lo_ajson TYPE REF TO zif_abapgit_ajson,
|
||||
lo_json_path TYPE REF TO zcl_abapgit_json_path,
|
||||
lt_translation TYPE string_table,
|
||||
lx_exception TYPE REF TO zcx_abapgit_ajson_error,
|
||||
lo_trans_file TYPE REF TO zcl_abapgit_properties_file.
|
||||
|
||||
|
||||
LOOP AT it_language INTO lv_langu.
|
||||
|
||||
ls_data = fill_translation( iv_name = is_intf-vseointerf-clsname
|
||||
iv_language = lv_langu ).
|
||||
|
||||
" convert AFF type to JSON
|
||||
TRY.
|
||||
lo_ajson = zcl_abapgit_ajson=>new( iv_keep_item_order = abap_true
|
||||
)->set( iv_path = '/'
|
||||
iv_val = ls_data
|
||||
)->map( zcl_abapgit_ajson_mapping=>create_to_camel_case( )
|
||||
)->filter( zcl_abapgit_ajson_filter_lib=>create_empty_filter( ) ).
|
||||
" remove manually the non-primitive types that are initial or not relevant for translation
|
||||
lo_ajson->delete( '/category/' ).
|
||||
lo_ajson->delete( '/proxy/' ).
|
||||
lv_json = lo_ajson->stringify( ).
|
||||
CATCH zcx_abapgit_ajson_error INTO lx_exception.
|
||||
zcx_abapgit_exception=>raise_with_text( lx_exception ).
|
||||
ENDTRY.
|
||||
|
||||
|
||||
CREATE OBJECT lo_json_path.
|
||||
lt_translation = lo_json_path->serialize( lv_json ).
|
||||
|
||||
CREATE OBJECT lo_trans_file
|
||||
EXPORTING iv_lang = lv_langu.
|
||||
|
||||
lo_trans_file->push_text_pairs( lt_translation ).
|
||||
|
||||
APPEND lo_trans_file TO rt_result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD fill_translation.
|
||||
DATA: lv_langu_sap1 TYPE sy-langu.
|
||||
|
||||
lv_langu_sap1 = zcl_abapgit_convert=>language_sap2_to_sap1( iv_language ).
|
||||
|
||||
rt_result-descriptions = lcl_aff_helper=>get_descriptions_compo_subco(
|
||||
iv_clif_name = iv_name
|
||||
iv_language = lv_langu_sap1 ).
|
||||
|
||||
SELECT SINGLE descript FROM seoclasstx INTO rt_result-header-description
|
||||
WHERE clsname = iv_name AND
|
||||
langu = lv_langu_sap1.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -55,6 +55,36 @@ CLASS ltcl_object_types IMPLEMENTATION.
|
|||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS lcl_settings_with_features DEFINITION.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES zif_abapgit_persist_settings.
|
||||
METHODS: constructor
|
||||
IMPORTING iv_features TYPE string.
|
||||
PRIVATE SECTION.
|
||||
DATA mv_features TYPE string.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_settings_with_features IMPLEMENTATION.
|
||||
|
||||
METHOD zif_abapgit_persist_settings~modify.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_persist_settings~read.
|
||||
|
||||
CREATE OBJECT ro_settings.
|
||||
ro_settings->set_experimental_features( mv_features ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD constructor.
|
||||
mv_features = iv_features.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS ltcl_serialize DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -80,7 +110,8 @@ CLASS ltcl_serialize DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT F
|
|||
serialize_msag FOR TESTING RAISING zcx_abapgit_exception,
|
||||
serialize_prog FOR TESTING RAISING zcx_abapgit_exception,
|
||||
serialize_tran FOR TESTING RAISING zcx_abapgit_exception,
|
||||
serialize_ttyp FOR TESTING RAISING zcx_abapgit_exception.
|
||||
serialize_ttyp FOR TESTING RAISING zcx_abapgit_exception,
|
||||
serialize_intf_aff_translate FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -162,6 +193,48 @@ CLASS ltcl_serialize IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD serialize_intf_aff_translate.
|
||||
|
||||
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item,
|
||||
lo_settings TYPE REF TO lcl_settings_with_features,
|
||||
ls_act TYPE zif_abapgit_objects=>ty_serialization,
|
||||
ls_translation_de TYPE zif_abapgit_git_definitions=>ty_file,
|
||||
lt_target_langu TYPE zif_abapgit_definitions=>ty_languages,
|
||||
lo_i18n_params TYPE REF TO zcl_abapgit_i18n_params,
|
||||
lv_features TYPE string,
|
||||
lv_filename TYPE string.
|
||||
|
||||
ls_item-obj_type = 'INTF'.
|
||||
ls_item-obj_name = 'IF_BADI_TADIR_CHANGED'.
|
||||
|
||||
lv_features = |{ zcl_abapgit_aff_registry=>c_aff_feature }, { zcl_abapgit_properties_file=>c_properties_feature }|.
|
||||
CREATE OBJECT lo_settings
|
||||
EXPORTING
|
||||
iv_features = lv_features.
|
||||
|
||||
zcl_abapgit_persist_injector=>set_settings( lo_settings ).
|
||||
|
||||
APPEND `DE` TO lt_target_langu.
|
||||
lo_i18n_params = zcl_abapgit_i18n_params=>new( iv_main_language = zif_abapgit_definitions=>c_english
|
||||
it_translation_langs = lt_target_langu
|
||||
iv_use_lxe = abap_true ).
|
||||
ls_act = zcl_abapgit_objects=>serialize(
|
||||
is_item = ls_item
|
||||
io_i18n_params = lo_i18n_params ).
|
||||
|
||||
cl_abap_unit_assert=>assert_not_initial( ls_act-files ).
|
||||
cl_abap_unit_assert=>assert_equals( act = ls_act-item
|
||||
exp = ls_item ).
|
||||
|
||||
|
||||
lv_filename = 'if_badi_tadir_changed.intf.i18n.de.properties'.
|
||||
READ TABLE ls_act-files WITH KEY filename = lv_filename INTO ls_translation_de.
|
||||
|
||||
cl_abap_unit_assert=>assert_not_initial( ls_translation_de ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD serialize_doma.
|
||||
|
||||
DATA: ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
|
|
|
@ -174,6 +174,7 @@
|
|||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_prog", "note": "no such table: seometarel"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_tran", "note": "no such table: seometarel"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_ttyp", "note": "no such table: seometarel"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_serialize", "method": "serialize_intf_aff_translate", "note": "Void type: SEOCLASSDF"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "throw_excp_if_object_is_locked", "note": "no such table: seometarel"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS", "class": "ltcl_check_objects_locked", "method": "no_excp_if_obj_is_not_locked", "note": "no such table: seometarel"},
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user