From 641025f907d244a6c65e2ac72d70a23f81ed5ed1 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 6 Jan 2018 07:16:58 +0000 Subject: [PATCH] lcl_convert to global class #1061 --- src/utils/zcl_abapgit_convert.clas.abap | 168 ++++++++++++++++++ .../zcl_abapgit_convert.clas.testclasses.abap | 66 +++++++ src/utils/zcl_abapgit_convert.clas.xml | 19 ++ src/zabapgit_dot_abapgit.prog.abap | 4 +- src/zabapgit_git.prog.abap | 30 ++-- src/zabapgit_http.prog.abap | 2 +- src/zabapgit_news.prog.abap | 4 +- src/zabapgit_object_wapa.prog.abap | 4 +- src/zabapgit_objects.prog.abap | 12 +- src/zabapgit_objects_impl.prog.abap | 2 +- src/zabapgit_tadir.prog.abap | 2 +- src/zabapgit_unit_test.prog.abap | 72 +------- src/zabapgit_util.prog.abap | 166 +---------------- 13 files changed, 289 insertions(+), 262 deletions(-) create mode 100644 src/utils/zcl_abapgit_convert.clas.abap create mode 100644 src/utils/zcl_abapgit_convert.clas.testclasses.abap create mode 100644 src/utils/zcl_abapgit_convert.clas.xml diff --git a/src/utils/zcl_abapgit_convert.clas.abap b/src/utils/zcl_abapgit_convert.clas.abap new file mode 100644 index 000000000..7e127bb93 --- /dev/null +++ b/src/utils/zcl_abapgit_convert.clas.abap @@ -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. diff --git a/src/utils/zcl_abapgit_convert.clas.testclasses.abap b/src/utils/zcl_abapgit_convert.clas.testclasses.abap new file mode 100644 index 000000000..09c2c7755 --- /dev/null +++ b/src/utils/zcl_abapgit_convert.clas.testclasses.abap @@ -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 diff --git a/src/utils/zcl_abapgit_convert.clas.xml b/src/utils/zcl_abapgit_convert.clas.xml new file mode 100644 index 000000000..40d190dc6 --- /dev/null +++ b/src/utils/zcl_abapgit_convert.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_CONVERT + 1 + E + Convert + 2 + 1 + X + X + X + X + + + + diff --git a/src/zabapgit_dot_abapgit.prog.abap b/src/zabapgit_dot_abapgit.prog.abap index 6c8e809a4..8a7080574 100644 --- a/src/zabapgit_dot_abapgit.prog.abap +++ b/src/zabapgit_dot_abapgit.prog.abap @@ -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. diff --git a/src/zabapgit_git.prog.abap b/src/zabapgit_git.prog.abap index ab6a2a47a..c16f7efba 100644 --- a/src/zabapgit_git.prog.abap +++ b/src/zabapgit_git.prog.abap @@ -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 -sha1 IS INITIAL. CONCATENATE -chmod -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( -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: 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 ). diff --git a/src/zabapgit_http.prog.abap b/src/zabapgit_http.prog.abap index e74024eda..c4475a7b7 100644 --- a/src/zabapgit_http.prog.abap +++ b/src/zabapgit_http.prog.abap @@ -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 diff --git a/src/zabapgit_news.prog.abap b/src/zabapgit_news.prog.abap index 1ea754a70..44fc82597 100644 --- a/src/zabapgit_news.prog.abap +++ b/src/zabapgit_news.prog.abap @@ -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. diff --git a/src/zabapgit_object_wapa.prog.abap b/src/zabapgit_object_wapa.prog.abap index 67945496d..8d01abfa5 100644 --- a/src/zabapgit_object_wapa.prog.abap +++ b/src/zabapgit_object_wapa.prog.abap @@ -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. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 23f08bf7c..e52ab17a5 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -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 ''. 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 diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index f3edd33a8..aa0d8ea36 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -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( ). diff --git a/src/zabapgit_tadir.prog.abap b/src/zabapgit_tadir.prog.abap index a95e1770c..66b48ad3c 100644 --- a/src/zabapgit_tadir.prog.abap +++ b/src/zabapgit_tadir.prog.abap @@ -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. diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 7d2a1b935..fc7bd5cb0 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -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 ). diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 2ccea827c..2609aaa47 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -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.