mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
lcl_convert to global class #1061
This commit is contained in:
parent
41634c0535
commit
641025f907
168
src/utils/zcl_abapgit_convert.clas.abap
Normal file
168
src/utils/zcl_abapgit_convert.clas.abap
Normal file
|
@ -0,0 +1,168 @@
|
|||
CLASS zcl_abapgit_convert DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS bitbyte_to_int
|
||||
IMPORTING
|
||||
!iv_bits TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_int) TYPE i .
|
||||
CLASS-METHODS x_to_bitbyte
|
||||
IMPORTING
|
||||
!iv_x TYPE x
|
||||
RETURNING
|
||||
VALUE(rv_bitbyte) TYPE zif_abapgit_definitions=>ty_bitbyte .
|
||||
CLASS-METHODS string_to_xstring_utf8
|
||||
IMPORTING
|
||||
!iv_string TYPE string
|
||||
RETURNING
|
||||
VALUE(rv_xstring) TYPE xstring .
|
||||
CLASS-METHODS xstring_to_string_utf8
|
||||
IMPORTING
|
||||
!iv_data TYPE xstring
|
||||
RETURNING
|
||||
VALUE(rv_string) TYPE string .
|
||||
CLASS-METHODS xstring_to_int
|
||||
IMPORTING
|
||||
!iv_xstring TYPE xstring
|
||||
RETURNING
|
||||
VALUE(rv_i) TYPE i
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS int_to_xstring4
|
||||
IMPORTING
|
||||
!iv_i TYPE i
|
||||
RETURNING
|
||||
VALUE(rv_xstring) TYPE xstring .
|
||||
CLASS-METHODS split_string
|
||||
IMPORTING
|
||||
!iv_string TYPE string
|
||||
RETURNING
|
||||
VALUE(rt_lines) TYPE string_table .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_CONVERT IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD bitbyte_to_int.
|
||||
|
||||
DATA: lv_bits TYPE string.
|
||||
|
||||
|
||||
lv_bits = iv_bits.
|
||||
|
||||
rv_int = 0.
|
||||
WHILE strlen( lv_bits ) > 0.
|
||||
rv_int = rv_int * 2.
|
||||
IF lv_bits(1) = '1'.
|
||||
rv_int = rv_int + 1.
|
||||
ENDIF.
|
||||
lv_bits = lv_bits+1.
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD. "bitbyte_to_int
|
||||
|
||||
|
||||
METHOD int_to_xstring4.
|
||||
* returns xstring of length 4 containing the integer value iv_i
|
||||
|
||||
DATA: lv_x TYPE x LENGTH 4.
|
||||
|
||||
|
||||
lv_x = iv_i.
|
||||
rv_xstring = lv_x.
|
||||
|
||||
ENDMETHOD. "int_to_xstring
|
||||
|
||||
|
||||
METHOD split_string.
|
||||
|
||||
FIND FIRST OCCURRENCE OF cl_abap_char_utilities=>cr_lf IN iv_string.
|
||||
|
||||
" Convert string into table depending on separator type CR_LF vs. LF
|
||||
IF sy-subrc = 0.
|
||||
SPLIT iv_string AT cl_abap_char_utilities=>cr_lf INTO TABLE rt_lines.
|
||||
ELSE.
|
||||
SPLIT iv_string AT cl_abap_char_utilities=>newline INTO TABLE rt_lines.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "split_string
|
||||
|
||||
|
||||
METHOD string_to_xstring_utf8.
|
||||
|
||||
DATA: lo_obj TYPE REF TO cl_abap_conv_out_ce.
|
||||
|
||||
|
||||
TRY.
|
||||
lo_obj = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
|
||||
|
||||
lo_obj->convert( EXPORTING data = iv_string
|
||||
IMPORTING buffer = rv_xstring ).
|
||||
|
||||
CATCH cx_parameter_invalid_range
|
||||
cx_sy_codepage_converter_init
|
||||
cx_sy_conversion_codepage
|
||||
cx_parameter_invalid_type. "#EC NO_HANDLER
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "string_to_xstring_utf8
|
||||
|
||||
|
||||
METHOD xstring_to_int.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lv_x TYPE x.
|
||||
|
||||
|
||||
lv_xstring = iv_xstring.
|
||||
WHILE xstrlen( lv_xstring ) > 0.
|
||||
lv_x = lv_xstring(1).
|
||||
rv_i = rv_i * 256 + lv_x.
|
||||
lv_xstring = lv_xstring+1.
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD. "xstring_to_int
|
||||
|
||||
|
||||
METHOD xstring_to_string_utf8.
|
||||
|
||||
DATA: lv_len TYPE i,
|
||||
lo_obj TYPE REF TO cl_abap_conv_in_ce.
|
||||
|
||||
|
||||
TRY.
|
||||
lo_obj = cl_abap_conv_in_ce=>create(
|
||||
input = iv_data
|
||||
encoding = 'UTF-8' ).
|
||||
lv_len = xstrlen( iv_data ).
|
||||
|
||||
lo_obj->read( EXPORTING n = lv_len
|
||||
IMPORTING data = rv_string ).
|
||||
|
||||
CATCH cx_parameter_invalid_range
|
||||
cx_sy_codepage_converter_init
|
||||
cx_sy_conversion_codepage
|
||||
cx_parameter_invalid_type. "#EC NO_HANDLER
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "xstring_to_string_utf8
|
||||
|
||||
|
||||
METHOD x_to_bitbyte.
|
||||
|
||||
DATA: lv_b TYPE n.
|
||||
|
||||
CLEAR rv_bitbyte.
|
||||
|
||||
DO 8 TIMES.
|
||||
GET BIT sy-index OF iv_x INTO lv_b.
|
||||
CONCATENATE rv_bitbyte lv_b INTO rv_bitbyte.
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD. "x_to_bitbyte
|
||||
ENDCLASS.
|
66
src/utils/zcl_abapgit_convert.clas.testclasses.abap
Normal file
66
src/utils/zcl_abapgit_convert.clas.testclasses.abap
Normal file
|
@ -0,0 +1,66 @@
|
|||
*----------------------------------------------------------------------*
|
||||
* CLASS ltcl_convert DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS ltcl_convert DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS convert_int FOR TESTING RAISING zcx_abapgit_exception.
|
||||
METHODS split_string FOR TESTING.
|
||||
|
||||
ENDCLASS. "ltcl_convert DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS ltcl_convert IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS ltcl_convert IMPLEMENTATION.
|
||||
|
||||
METHOD convert_int.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lv_input TYPE i,
|
||||
lv_result TYPE i.
|
||||
|
||||
|
||||
DO 1000 TIMES.
|
||||
lv_input = sy-index.
|
||||
lv_xstring = zcl_abapgit_convert=>int_to_xstring4( lv_input ).
|
||||
lv_result = zcl_abapgit_convert=>xstring_to_int( lv_xstring ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = lv_input
|
||||
act = lv_result ).
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD. "convert_int
|
||||
|
||||
METHOD split_string.
|
||||
|
||||
DATA: lt_act TYPE string_table,
|
||||
lt_exp TYPE string_table.
|
||||
|
||||
APPEND 'ABC' TO lt_exp.
|
||||
APPEND '123' TO lt_exp.
|
||||
|
||||
" Case 1. String separated by CRLF
|
||||
lt_act = zcl_abapgit_convert=>split_string( 'ABC' && cl_abap_char_utilities=>cr_lf && '123' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = lt_exp
|
||||
act = lt_act
|
||||
msg = ' Error during string split: CRLF' ).
|
||||
|
||||
CLEAR: lt_act.
|
||||
|
||||
" Case 2. String separated by LF
|
||||
lt_act = zcl_abapgit_convert=>split_string( 'ABC' && cl_abap_char_utilities=>newline && '123' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = lt_exp
|
||||
act = lt_act
|
||||
msg = ' Error during string split: LF' ).
|
||||
|
||||
ENDMETHOD. "split_string.
|
||||
|
||||
ENDCLASS. "ltcl_convert IMPLEMENTATION
|
19
src/utils/zcl_abapgit_convert.clas.xml
Normal file
19
src/utils/zcl_abapgit_convert.clas.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?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_CONVERT</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Convert</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<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>
|
|
@ -94,7 +94,7 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
|
|||
ls_data TYPE ty_dot_abapgit.
|
||||
|
||||
|
||||
lv_xml = lcl_convert=>xstring_to_string_utf8( iv_xstr ).
|
||||
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( iv_xstr ).
|
||||
|
||||
ls_data = from_xml( lv_xml ).
|
||||
|
||||
|
@ -110,7 +110,7 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
|
|||
|
||||
lv_xml = to_xml( ms_data ).
|
||||
|
||||
rv_xstr = lcl_convert=>string_to_xstring_utf8( lv_xml ).
|
||||
rv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -256,13 +256,13 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
lv_cmd_pkt = lcl_git_utils=>pkt_string( lv_line ).
|
||||
|
||||
lv_buffer = lv_cmd_pkt && '0000'.
|
||||
lv_tmp = lcl_convert=>string_to_xstring_utf8( lv_buffer ).
|
||||
lv_tmp = zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ).
|
||||
|
||||
CONCATENATE lv_tmp iv_pack INTO lv_xstring IN BYTE MODE.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close( lv_xstring ).
|
||||
|
||||
lv_string = lcl_convert=>xstring_to_string_utf8( lv_xstring ).
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ).
|
||||
IF NOT lv_string CP '*unpack ok*'.
|
||||
zcx_abapgit_exception=>raise( 'unpack not ok' ).
|
||||
ELSEIF lv_string CP '*pre-receive hook declined*'.
|
||||
|
@ -368,7 +368,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
|
|||
&& '0009done' && zif_abapgit_definitions=>gc_newline.
|
||||
|
||||
lv_xstring = lo_client->send_receive_close(
|
||||
lcl_convert=>string_to_xstring_utf8( lv_buffer ) ).
|
||||
zcl_abapgit_convert=>string_to_xstring_utf8( lv_buffer ) ).
|
||||
|
||||
parse( IMPORTING ev_pack = lv_pack
|
||||
CHANGING cv_data = lv_xstring ).
|
||||
|
@ -494,19 +494,19 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
|
||||
|
||||
lv_x = cv_data(1).
|
||||
lv_bitbyte = lcl_convert=>x_to_bitbyte( lv_x ).
|
||||
lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( lv_x ).
|
||||
|
||||
cv_data = cv_data+1.
|
||||
lv_length_bits = lv_bitbyte+4.
|
||||
|
||||
WHILE lv_bitbyte(1) <> '0'.
|
||||
lv_x = cv_data(1).
|
||||
lv_bitbyte = lcl_convert=>x_to_bitbyte( lv_x ).
|
||||
lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( lv_x ).
|
||||
cv_data = cv_data+1.
|
||||
CONCATENATE lv_bitbyte+1 lv_length_bits INTO lv_length_bits.
|
||||
ENDWHILE.
|
||||
|
||||
ev_length = lcl_convert=>bitbyte_to_int( lv_length_bits ).
|
||||
ev_length = zcl_abapgit_convert=>bitbyte_to_int( lv_length_bits ).
|
||||
|
||||
ENDMETHOD. "get_length
|
||||
|
||||
|
@ -530,7 +530,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
ASSERT NOT <ls_node>-sha1 IS INITIAL.
|
||||
|
||||
CONCATENATE <ls_node>-chmod <ls_node>-name INTO lv_string SEPARATED BY space.
|
||||
lv_xstring = lcl_convert=>string_to_xstring_utf8( lv_string ).
|
||||
lv_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
|
||||
|
||||
lv_hex20 = to_upper( <ls_node>-sha1 ).
|
||||
CONCATENATE rv_data lv_xstring lc_null lv_hex20 INTO rv_data IN BYTE MODE.
|
||||
|
@ -582,7 +582,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
|
||||
CONCATENATE lv_string zif_abapgit_definitions=>gc_newline is_commit-body INTO lv_string.
|
||||
|
||||
rv_data = lcl_convert=>string_to_xstring_utf8( lv_string ).
|
||||
rv_data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
|
||||
|
||||
ENDMETHOD. "encode_commit
|
||||
|
||||
|
@ -592,7 +592,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
lv_bitbyte TYPE zif_abapgit_definitions=>ty_bitbyte.
|
||||
|
||||
|
||||
lv_bitbyte = lcl_convert=>x_to_bitbyte( iv_x ).
|
||||
lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( iv_x ).
|
||||
lv_char3 = lv_bitbyte+1.
|
||||
|
||||
CASE lv_char3.
|
||||
|
@ -623,7 +623,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
FIELD-SYMBOLS: <lv_string> LIKE LINE OF lt_string.
|
||||
|
||||
|
||||
lv_string = lcl_convert=>xstring_to_string_utf8( iv_data ).
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_data ).
|
||||
|
||||
SPLIT lv_string AT zif_abapgit_definitions=>gc_newline INTO TABLE lt_string.
|
||||
|
||||
|
@ -683,13 +683,13 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
DO.
|
||||
lv_x = cv_delta(1).
|
||||
cv_delta = cv_delta+1.
|
||||
lv_bitbyte = lcl_convert=>x_to_bitbyte( lv_x ).
|
||||
lv_bitbyte = zcl_abapgit_convert=>x_to_bitbyte( lv_x ).
|
||||
CONCATENATE lv_bitbyte+1 lv_bits INTO lv_bits.
|
||||
IF lv_bitbyte(1) = '0'.
|
||||
EXIT. " current loop
|
||||
ENDIF.
|
||||
ENDDO.
|
||||
ev_header = lcl_convert=>bitbyte_to_int( lv_bits ).
|
||||
ev_header = zcl_abapgit_convert=>bitbyte_to_int( lv_bits ).
|
||||
|
||||
ENDMETHOD. "delta_header
|
||||
|
||||
|
@ -851,7 +851,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
lv_len = lv_cursor - lv_start.
|
||||
lv_xstring = iv_data+lv_start(lv_len).
|
||||
|
||||
lv_string = lcl_convert=>xstring_to_string_utf8( lv_xstring ).
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_xstring ).
|
||||
SPLIT lv_string AT space INTO lv_chmod lv_name.
|
||||
|
||||
lv_offset = lv_cursor + 1.
|
||||
|
@ -942,7 +942,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
|
||||
* number of objects
|
||||
lv_xstring = lv_data(4).
|
||||
lv_objects = lcl_convert=>xstring_to_int( lv_xstring ).
|
||||
lv_objects = zcl_abapgit_convert=>xstring_to_int( lv_xstring ).
|
||||
lv_data = lv_data+4.
|
||||
|
||||
|
||||
|
@ -1050,7 +1050,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
|
|||
|
||||
CONCATENATE rv_data c_version INTO rv_data IN BYTE MODE.
|
||||
|
||||
lv_xstring = lcl_convert=>int_to_xstring4( lines( it_objects ) ).
|
||||
lv_xstring = zcl_abapgit_convert=>int_to_xstring4( lines( it_objects ) ).
|
||||
CONCATENATE rv_data lv_xstring INTO rv_data IN BYTE MODE.
|
||||
|
||||
lv_objects_total = lines( it_objects ).
|
||||
|
|
|
@ -347,7 +347,7 @@ CLASS lcl_http_digest IMPLEMENTATION.
|
|||
lv_hash TYPE xstring.
|
||||
|
||||
|
||||
lv_xstr = lcl_convert=>string_to_xstring_utf8( iv_data ).
|
||||
lv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( iv_data ).
|
||||
|
||||
CALL FUNCTION 'CALCULATE_HASH_FOR_RAW'
|
||||
EXPORTING
|
||||
|
|
|
@ -151,8 +151,8 @@ CLASS lcl_news IMPLEMENTATION.
|
|||
RETURN. " Internal format of program version is not correct -> abort parsing
|
||||
ENDIF.
|
||||
|
||||
lv_string = lcl_convert=>xstring_to_string_utf8( iv_rawdata ).
|
||||
lt_lines = lcl_convert=>split_string( lv_string ).
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_rawdata ).
|
||||
lt_lines = zcl_abapgit_convert=>split_string( lv_string ).
|
||||
mt_log = parse( it_lines = lt_lines iv_current_version = mv_current_version ).
|
||||
|
||||
READ TABLE mt_log INTO ls_log_line INDEX 1.
|
||||
|
|
|
@ -413,7 +413,7 @@ CLASS lcl_object_wapa IMPLEMENTATION.
|
|||
DATA: lv_string TYPE string.
|
||||
|
||||
|
||||
lv_string = lcl_convert=>xstring_to_string_utf8( iv_content ).
|
||||
lv_string = zcl_abapgit_convert=>xstring_to_string_utf8( iv_content ).
|
||||
|
||||
SPLIT lv_string AT zif_abapgit_definitions=>gc_newline INTO TABLE rt_content.
|
||||
|
||||
|
@ -438,7 +438,7 @@ CLASS lcl_object_wapa IMPLEMENTATION.
|
|||
|
||||
CONCATENATE LINES OF lt_content INTO lv_string SEPARATED BY zif_abapgit_definitions=>gc_newline RESPECTING BLANKS.
|
||||
|
||||
rv_content = lcl_convert=>string_to_xstring_utf8( lv_string ).
|
||||
rv_content = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -347,7 +347,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
|
|||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
rv_string = lcl_convert=>xstring_to_string_utf8( lv_data ).
|
||||
rv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
ENDMETHOD. "read_string
|
||||
|
||||
|
@ -369,7 +369,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
|
|||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_abap = lcl_convert=>xstring_to_string_utf8( lv_data ).
|
||||
lv_abap = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
SPLIT lv_abap AT zif_abapgit_definitions=>gc_newline INTO TABLE rt_abap.
|
||||
|
||||
|
@ -388,7 +388,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
|
|||
ls_file-path = '/'.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'abap' ). "#EC NOTEXT
|
||||
ls_file-data = lcl_convert=>string_to_xstring_utf8( lv_source ).
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_source ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
|
@ -402,7 +402,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
|
|||
ls_file-path = '/'.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ). "#EC NOTEXT
|
||||
ls_file-data = lcl_convert=>string_to_xstring_utf8( iv_string ).
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( iv_string ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
|
@ -427,7 +427,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
|
|||
WITH '<?xml version="1.0" encoding="utf-8"?>'.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ls_file-data = lcl_convert=>string_to_xstring_utf8( lv_xml ).
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
|
@ -445,7 +445,7 @@ CLASS lcl_objects_files IMPLEMENTATION.
|
|||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
lv_xml = lcl_convert=>xstring_to_string_utf8( lv_data ).
|
||||
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
CREATE OBJECT ro_xml
|
||||
EXPORTING
|
||||
|
|
|
@ -590,7 +590,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
IF sy-subrc = 0.
|
||||
CREATE OBJECT lo_remote_version
|
||||
EXPORTING
|
||||
iv_xml = lcl_convert=>xstring_to_string_utf8( ls_remote_file-data ).
|
||||
iv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( ls_remote_file-data ).
|
||||
lo_comparison_result = io_object->compare_to_remote_version( lo_remote_version ).
|
||||
lo_comparison_result->show_confirmation_dialog( ).
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
no_authority = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc = 0.
|
||||
rv_hash = lcl_hash=>sha1_raw( lcl_convert=>string_to_xstring_utf8( lv_url ) ).
|
||||
rv_hash = lcl_hash=>sha1_raw( zcl_abapgit_convert=>string_to_xstring_utf8( lv_url ) ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -41,72 +41,6 @@ END-OF-DEFINITION.
|
|||
* todo, should the tests be in the same include as the classes
|
||||
* they are testing?
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS ltcl_convert DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS ltcl_convert DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS convert_int FOR TESTING RAISING zcx_abapgit_exception.
|
||||
METHODS split_string FOR TESTING.
|
||||
|
||||
ENDCLASS. "ltcl_convert DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS ltcl_convert IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS ltcl_convert IMPLEMENTATION.
|
||||
|
||||
METHOD convert_int.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lv_input TYPE i,
|
||||
lv_result TYPE i.
|
||||
|
||||
|
||||
DO 1000 TIMES.
|
||||
lv_input = sy-index.
|
||||
lv_xstring = lcl_convert=>int_to_xstring4( lv_input ).
|
||||
lv_result = lcl_convert=>xstring_to_int( lv_xstring ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = lv_input
|
||||
act = lv_result ).
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD. "convert_int
|
||||
|
||||
METHOD split_string.
|
||||
|
||||
DATA: lt_act TYPE string_table,
|
||||
lt_exp TYPE string_table.
|
||||
|
||||
APPEND 'ABC' TO lt_exp.
|
||||
APPEND '123' TO lt_exp.
|
||||
|
||||
" Case 1. String separated by CRLF
|
||||
lt_act = lcl_convert=>split_string( 'ABC' && cl_abap_char_utilities=>cr_lf && '123' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = lt_exp
|
||||
act = lt_act
|
||||
msg = ' Error during string split: CRLF' ).
|
||||
|
||||
CLEAR: lt_act.
|
||||
|
||||
" Case 2. String separated by LF
|
||||
lt_act = lcl_convert=>split_string( 'ABC' && cl_abap_char_utilities=>newline && '123' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = lt_exp
|
||||
act = lt_act
|
||||
msg = ' Error during string split: LF' ).
|
||||
|
||||
ENDMETHOD. "split_string.
|
||||
|
||||
ENDCLASS. "ltcl_convert IMPLEMENTATION
|
||||
|
||||
CLASS ltcl_critical_tests DEFINITION FINAL FOR TESTING.
|
||||
PUBLIC SECTION.
|
||||
|
@ -298,8 +232,8 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
CONCATENATE LINES OF mt_new INTO lv_new SEPARATED BY zif_abapgit_definitions=>gc_newline.
|
||||
CONCATENATE LINES OF mt_old INTO lv_old SEPARATED BY zif_abapgit_definitions=>gc_newline.
|
||||
|
||||
lv_xnew = lcl_convert=>string_to_xstring_utf8( lv_new ).
|
||||
lv_xold = lcl_convert=>string_to_xstring_utf8( lv_old ).
|
||||
lv_xnew = zcl_abapgit_convert=>string_to_xstring_utf8( lv_new ).
|
||||
lv_xold = zcl_abapgit_convert=>string_to_xstring_utf8( lv_old ).
|
||||
|
||||
CREATE OBJECT lo_diff
|
||||
EXPORTING
|
||||
|
@ -977,7 +911,7 @@ CLASS ltcl_git_pack_decode_commit IMPLEMENTATION.
|
|||
DATA: lv_xstr TYPE xstring.
|
||||
|
||||
|
||||
lv_xstr = lcl_convert=>string_to_xstring_utf8( mv_str ).
|
||||
lv_xstr = zcl_abapgit_convert=>string_to_xstring_utf8( mv_str ).
|
||||
|
||||
ms_raw = lcl_git_pack=>decode_commit( lv_xstr ).
|
||||
|
||||
|
|
|
@ -79,166 +79,6 @@ CLASS lcl_state IMPLEMENTATION.
|
|||
|
||||
ENDCLASS.
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_convert DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_convert DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS bitbyte_to_int
|
||||
IMPORTING iv_bits TYPE clike
|
||||
RETURNING VALUE(rv_int) TYPE i.
|
||||
|
||||
CLASS-METHODS x_to_bitbyte
|
||||
IMPORTING iv_x TYPE x
|
||||
RETURNING VALUE(rv_bitbyte) TYPE zif_abapgit_definitions=>ty_bitbyte.
|
||||
|
||||
CLASS-METHODS string_to_xstring_utf8
|
||||
IMPORTING iv_string TYPE string
|
||||
RETURNING VALUE(rv_xstring) TYPE xstring.
|
||||
|
||||
CLASS-METHODS xstring_to_string_utf8
|
||||
IMPORTING iv_data TYPE xstring
|
||||
RETURNING VALUE(rv_string) TYPE string.
|
||||
|
||||
CLASS-METHODS xstring_to_int
|
||||
IMPORTING iv_xstring TYPE xstring
|
||||
RETURNING VALUE(rv_i) TYPE i
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
CLASS-METHODS int_to_xstring4
|
||||
IMPORTING iv_i TYPE i
|
||||
RETURNING VALUE(rv_xstring) TYPE xstring.
|
||||
|
||||
CLASS-METHODS split_string
|
||||
IMPORTING iv_string TYPE string
|
||||
RETURNING VALUE(rt_lines) TYPE string_table.
|
||||
|
||||
ENDCLASS. "lcl_convert DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_convert IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_convert IMPLEMENTATION.
|
||||
|
||||
METHOD int_to_xstring4.
|
||||
* returns xstring of length 4 containing the integer value iv_i
|
||||
|
||||
DATA: lv_x TYPE x LENGTH 4.
|
||||
|
||||
|
||||
lv_x = iv_i.
|
||||
rv_xstring = lv_x.
|
||||
|
||||
ENDMETHOD. "int_to_xstring
|
||||
|
||||
METHOD xstring_to_int.
|
||||
|
||||
DATA: lv_xstring TYPE xstring,
|
||||
lv_x TYPE x.
|
||||
|
||||
|
||||
lv_xstring = iv_xstring.
|
||||
WHILE xstrlen( lv_xstring ) > 0.
|
||||
lv_x = lv_xstring(1).
|
||||
rv_i = rv_i * 256 + lv_x.
|
||||
lv_xstring = lv_xstring+1.
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD. "xstring_to_int
|
||||
|
||||
METHOD xstring_to_string_utf8.
|
||||
|
||||
DATA: lv_len TYPE i,
|
||||
lo_obj TYPE REF TO cl_abap_conv_in_ce.
|
||||
|
||||
|
||||
TRY.
|
||||
lo_obj = cl_abap_conv_in_ce=>create(
|
||||
input = iv_data
|
||||
encoding = 'UTF-8' ).
|
||||
lv_len = xstrlen( iv_data ).
|
||||
|
||||
lo_obj->read( EXPORTING n = lv_len
|
||||
IMPORTING data = rv_string ).
|
||||
|
||||
CATCH cx_parameter_invalid_range
|
||||
cx_sy_codepage_converter_init
|
||||
cx_sy_conversion_codepage
|
||||
cx_parameter_invalid_type. "#EC NO_HANDLER
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "xstring_to_string_utf8
|
||||
|
||||
METHOD string_to_xstring_utf8.
|
||||
|
||||
DATA: lo_obj TYPE REF TO cl_abap_conv_out_ce.
|
||||
|
||||
|
||||
TRY.
|
||||
lo_obj = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
|
||||
|
||||
lo_obj->convert( EXPORTING data = iv_string
|
||||
IMPORTING buffer = rv_xstring ).
|
||||
|
||||
CATCH cx_parameter_invalid_range
|
||||
cx_sy_codepage_converter_init
|
||||
cx_sy_conversion_codepage
|
||||
cx_parameter_invalid_type. "#EC NO_HANDLER
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "string_to_xstring_utf8
|
||||
|
||||
METHOD bitbyte_to_int.
|
||||
|
||||
DATA: lv_bits TYPE string.
|
||||
|
||||
|
||||
lv_bits = iv_bits.
|
||||
|
||||
rv_int = 0.
|
||||
WHILE strlen( lv_bits ) > 0.
|
||||
rv_int = rv_int * 2.
|
||||
IF lv_bits(1) = '1'.
|
||||
rv_int = rv_int + 1.
|
||||
ENDIF.
|
||||
lv_bits = lv_bits+1.
|
||||
ENDWHILE.
|
||||
|
||||
ENDMETHOD. "bitbyte_to_int
|
||||
|
||||
METHOD x_to_bitbyte.
|
||||
|
||||
DATA: lv_b TYPE n.
|
||||
|
||||
CLEAR rv_bitbyte.
|
||||
|
||||
DO 8 TIMES.
|
||||
GET BIT sy-index OF iv_x INTO lv_b.
|
||||
CONCATENATE rv_bitbyte lv_b INTO rv_bitbyte.
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD. "x_to_bitbyte
|
||||
|
||||
METHOD split_string.
|
||||
|
||||
FIND FIRST OCCURRENCE OF cl_abap_char_utilities=>cr_lf IN iv_string.
|
||||
|
||||
" Convert string into table depending on separator type CR_LF vs. LF
|
||||
IF sy-subrc = 0.
|
||||
SPLIT iv_string AT cl_abap_char_utilities=>cr_lf INTO TABLE rt_lines.
|
||||
ELSE.
|
||||
SPLIT iv_string AT cl_abap_char_utilities=>newline INTO TABLE rt_lines.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "split_string
|
||||
|
||||
ENDCLASS. "lcl_convert IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_hash DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -355,7 +195,7 @@ CLASS lcl_hash IMPLEMENTATION.
|
|||
lv_char10 = lv_len.
|
||||
CONDENSE lv_char10.
|
||||
CONCATENATE iv_type lv_char10 INTO lv_string SEPARATED BY space.
|
||||
lv_xstring = lcl_convert=>string_to_xstring_utf8( lv_string ).
|
||||
lv_xstring = zcl_abapgit_convert=>string_to_xstring_utf8( lv_string ).
|
||||
|
||||
lv_string = lv_xstring.
|
||||
CONCATENATE lv_string '00' INTO lv_string.
|
||||
|
@ -584,8 +424,8 @@ CLASS lcl_diff IMPLEMENTATION.
|
|||
lv_old TYPE string.
|
||||
|
||||
|
||||
lv_new = lcl_convert=>xstring_to_string_utf8( iv_new ).
|
||||
lv_old = lcl_convert=>xstring_to_string_utf8( iv_old ).
|
||||
lv_new = zcl_abapgit_convert=>xstring_to_string_utf8( iv_new ).
|
||||
lv_old = zcl_abapgit_convert=>xstring_to_string_utf8( iv_old ).
|
||||
|
||||
SPLIT lv_new AT zif_abapgit_definitions=>gc_newline INTO TABLE et_new.
|
||||
SPLIT lv_old AT zif_abapgit_definitions=>gc_newline INTO TABLE et_old.
|
||||
|
|
Loading…
Reference in New Issue
Block a user