mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
Prepare processing longtexts for sub components (#5786)
This commit is contained in:
parent
125b529583
commit
d936b8dc0b
|
@ -1,36 +1,35 @@
|
|||
CLASS zcl_abapgit_longtexts DEFINITION
|
||||
PUBLIC
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_factory .
|
||||
GLOBAL FRIENDS zcl_abapgit_factory.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_longtexts .
|
||||
PROTECTED SECTION.
|
||||
INTERFACES zif_abapgit_longtexts.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_longtext,
|
||||
dokil TYPE dokil,
|
||||
head TYPE thead,
|
||||
lines TYPE tline_tab,
|
||||
END OF ty_longtext .
|
||||
TYPES:
|
||||
ty_longtexts TYPE STANDARD TABLE OF ty_longtext WITH NON-UNIQUE DEFAULT KEY .
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS read
|
||||
IMPORTING
|
||||
!iv_object_name TYPE sobj_name
|
||||
!iv_object_name TYPE clike
|
||||
!iv_longtext_id TYPE dokil-id
|
||||
!it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt
|
||||
!iv_main_lang_only TYPE abap_bool DEFAULT abap_false
|
||||
!iv_clear_fields TYPE abap_bool DEFAULT abap_true
|
||||
RETURNING
|
||||
VALUE(rt_longtexts) TYPE ty_longtexts
|
||||
VALUE(rt_longtexts) TYPE zif_abapgit_longtexts=>ty_longtexts
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PRIVATE SECTION.
|
||||
|
||||
CONSTANTS c_docu_state_active TYPE dokstate VALUE 'A' ##NO_TEXT.
|
||||
|
||||
METHODS escape_name
|
||||
IMPORTING
|
||||
!iv_longtext_id TYPE dokil-id
|
||||
!iv_object_name TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_object) TYPE dokil-object.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -38,30 +37,58 @@ ENDCLASS.
|
|||
CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD escape_name.
|
||||
" Prepare name for SQL LIKE condition
|
||||
rv_object = iv_object_name.
|
||||
|
||||
IF 'CA,CE,CO,CT,IA,IE,IO,WC,FU,FX,DI,IS,PS' CS iv_longtext_id.
|
||||
" Document types of objects with sub-objects
|
||||
rv_object+30 = '%'.
|
||||
ELSEIF 'OD' CS iv_longtext_id.
|
||||
rv_object+10 = '%'.
|
||||
ENDIF.
|
||||
|
||||
rv_object = replace(
|
||||
val = rv_object
|
||||
sub = '_'
|
||||
with = '#_'
|
||||
occ = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: ls_longtext TYPE ty_longtext,
|
||||
DATA: ls_longtext TYPE zif_abapgit_longtexts=>ty_longtext,
|
||||
lv_object TYPE dokil-object,
|
||||
lt_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dokil> LIKE LINE OF lt_dokil.
|
||||
|
||||
lv_object = escape_name(
|
||||
iv_longtext_id = iv_longtext_id
|
||||
iv_object_name = iv_object_name ).
|
||||
|
||||
IF lines( it_dokil ) > 0.
|
||||
|
||||
lt_dokil = it_dokil.
|
||||
|
||||
IF iv_main_lang_only = abap_true.
|
||||
DELETE lt_dokil WHERE masterlang <> abap_true.
|
||||
ENDIF.
|
||||
|
||||
ELSEIF iv_longtext_id IS NOT INITIAL.
|
||||
IF iv_main_lang_only = abap_true.
|
||||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
WHERE id = iv_longtext_id
|
||||
AND object = iv_object_name
|
||||
AND object LIKE lv_object ESCAPE '#'
|
||||
AND masterlang = abap_true
|
||||
ORDER BY PRIMARY KEY.
|
||||
ELSE.
|
||||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
WHERE id = iv_longtext_id
|
||||
AND object = iv_object_name
|
||||
AND object LIKE lv_object ESCAPE '#'
|
||||
ORDER BY PRIMARY KEY.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
|
@ -109,8 +136,8 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_longtexts~changed_by.
|
||||
|
||||
DATA: lt_longtexts TYPE ty_longtexts.
|
||||
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext.
|
||||
DATA: lt_longtexts TYPE zif_abapgit_longtexts=>ty_longtexts.
|
||||
FIELD-SYMBOLS: <ls_longtext> TYPE zif_abapgit_longtexts=>ty_longtext.
|
||||
|
||||
lt_longtexts = read( iv_object_name = iv_object_name
|
||||
iv_longtext_id = iv_longtext_id
|
||||
|
@ -130,13 +157,19 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_longtexts~delete.
|
||||
|
||||
DATA: lt_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt.
|
||||
DATA: lt_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt,
|
||||
lv_object TYPE dokil-object.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dokil> TYPE dokil.
|
||||
|
||||
lv_object = escape_name(
|
||||
iv_longtext_id = iv_longtext_id
|
||||
iv_object_name = iv_object_name ).
|
||||
|
||||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
WHERE id = iv_longtext_id
|
||||
AND object = iv_object_name.
|
||||
AND object LIKE lv_object ESCAPE '#'.
|
||||
|
||||
LOOP AT lt_dokil ASSIGNING <ls_dokil>.
|
||||
|
||||
|
@ -161,13 +194,18 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_longtexts~deserialize.
|
||||
|
||||
DATA: lt_longtexts TYPE ty_longtexts,
|
||||
DATA: lt_longtexts TYPE zif_abapgit_longtexts=>ty_longtexts,
|
||||
lv_object TYPE dokil-object,
|
||||
lt_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt,
|
||||
lv_no_main_lang TYPE dokil-masterlang.
|
||||
|
||||
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext,
|
||||
FIELD-SYMBOLS: <ls_longtext> TYPE zif_abapgit_longtexts=>ty_longtext,
|
||||
<ls_dokil> TYPE dokil.
|
||||
|
||||
lv_object = escape_name(
|
||||
iv_longtext_id = iv_longtext_id
|
||||
iv_object_name = iv_object_name ).
|
||||
|
||||
ii_xml->read(
|
||||
EXPORTING
|
||||
iv_name = iv_longtext_name
|
||||
|
@ -195,7 +233,7 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
SELECT * FROM dokil
|
||||
INTO TABLE lt_dokil
|
||||
WHERE id = iv_longtext_id
|
||||
AND object = iv_object_name.
|
||||
AND object LIKE lv_object ESCAPE '#'.
|
||||
|
||||
LOOP AT lt_dokil ASSIGNING <ls_dokil>.
|
||||
|
||||
|
@ -227,23 +265,17 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_longtexts~serialize.
|
||||
|
||||
DATA lt_longtexts TYPE ty_longtexts.
|
||||
DATA lt_dokil LIKE it_dokil.
|
||||
DATA lv_main_lang_only TYPE abap_bool.
|
||||
rt_longtexts = read( iv_object_name = iv_object_name
|
||||
iv_longtext_id = iv_longtext_id
|
||||
it_dokil = it_dokil
|
||||
iv_main_lang_only = ii_xml->i18n_params( )-main_language_only ).
|
||||
|
||||
lt_dokil = it_dokil.
|
||||
lv_main_lang_only = ii_xml->i18n_params( )-main_language_only.
|
||||
IF lv_main_lang_only = abap_true.
|
||||
DELETE lt_dokil WHERE masterlang <> abap_true.
|
||||
IF rt_longtexts IS SUPPLIED.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lt_longtexts = read( iv_object_name = iv_object_name
|
||||
iv_longtext_id = iv_longtext_id
|
||||
it_dokil = lt_dokil
|
||||
iv_main_lang_only = lv_main_lang_only ).
|
||||
|
||||
ii_xml->add( iv_name = iv_longtext_name
|
||||
ig_data = lt_longtexts ).
|
||||
ig_data = rt_longtexts ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
CLASS ltcl_longtexts DEFINITION FOR TESTING RISK LEVEL HARMLESS
|
||||
DURATION SHORT FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO zcl_abapgit_longtexts.
|
||||
|
||||
METHODS:
|
||||
setup,
|
||||
escape_name FOR TESTING.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_longtexts DEFINITION LOCAL FRIENDS ltcl_longtexts.
|
||||
|
||||
CLASS ltcl_longtexts IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_cut.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD escape_name.
|
||||
|
||||
DATA lv_act TYPE dokil-object.
|
||||
|
||||
" no sub-objects
|
||||
lv_act = mo_cut->escape_name(
|
||||
iv_longtext_id = 'CL'
|
||||
iv_object_name = 'ZTEST' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_act
|
||||
exp = 'ZTEST' ).
|
||||
|
||||
lv_act = mo_cut->escape_name(
|
||||
iv_longtext_id = 'CL'
|
||||
iv_object_name = 'ZCL_TEST_TEXT' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_act
|
||||
exp = 'ZCL#_TEST#_TEXT' ).
|
||||
|
||||
" with sub-objects
|
||||
lv_act = mo_cut->escape_name(
|
||||
iv_longtext_id = 'CA'
|
||||
iv_object_name = 'ZTEST' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_act
|
||||
exp = 'ZTEST %' ).
|
||||
|
||||
lv_act = mo_cut->escape_name(
|
||||
iv_longtext_id = 'CA'
|
||||
iv_object_name = 'ZCL_TEST_TEXT' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_act
|
||||
exp = 'ZCL#_TEST#_TEXT %' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
INTERFACE zif_abapgit_longtexts
|
||||
PUBLIC .
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_longtext,
|
||||
dokil TYPE dokil,
|
||||
head TYPE thead,
|
||||
lines TYPE tline_tab,
|
||||
END OF ty_longtext .
|
||||
TYPES:
|
||||
ty_longtexts TYPE STANDARD TABLE OF ty_longtext WITH NON-UNIQUE DEFAULT KEY .
|
||||
|
||||
METHODS changed_by
|
||||
IMPORTING
|
||||
|
@ -13,17 +21,19 @@ INTERFACE zif_abapgit_longtexts
|
|||
zcx_abapgit_exception .
|
||||
METHODS serialize
|
||||
IMPORTING
|
||||
!iv_longtext_name TYPE string DEFAULT 'LONGTEXTS'
|
||||
!iv_object_name TYPE sobj_name
|
||||
!iv_longtext_id TYPE dokil-id
|
||||
!it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt OPTIONAL
|
||||
!ii_xml TYPE REF TO zif_abapgit_xml_output
|
||||
!iv_longtext_name TYPE string DEFAULT 'LONGTEXTS'
|
||||
!iv_object_name TYPE clike
|
||||
!iv_longtext_id TYPE dokil-id
|
||||
!it_dokil TYPE zif_abapgit_definitions=>ty_dokil_tt OPTIONAL
|
||||
!ii_xml TYPE REF TO zif_abapgit_xml_output
|
||||
RETURNING
|
||||
VALUE(rt_longtexts) TYPE ty_longtexts
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS deserialize
|
||||
IMPORTING
|
||||
!iv_longtext_name TYPE string DEFAULT 'LONGTEXTS'
|
||||
!iv_object_name TYPE sobj_name
|
||||
!iv_object_name TYPE clike
|
||||
!iv_longtext_id TYPE dokil-id
|
||||
!ii_xml TYPE REF TO zif_abapgit_xml_input
|
||||
!iv_main_language TYPE sy-langu
|
||||
|
|
|
@ -169,6 +169,8 @@
|
|||
|
||||
{"object": "ZCL_ABAPGIT_GIT_URL", "class": "ltcl_repo_online", "method": "test_repo_commit_show_urls"},
|
||||
|
||||
{"object": "ZCL_ABAPGIT_LONGTEXTS", "class": "ltcl_longtexts", "method": "escape_name", "note": "Void type: DOKIL"},
|
||||
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS_PROGRAM", "class": "ltcl_test", "method": "strip_generation_comments_1", "note": "Void type: ABAPTXT255_TAB"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS_PROGRAM", "class": "ltcl_test", "method": "strip_generation_comments_2", "note": "Void type: ABAPTXT255_TAB"},
|
||||
{"object": "ZCL_ABAPGIT_OBJECTS_FILES", "class": "ltcl_objects_files", "method": "read_abap", "note": "Void type: ABAPTXT255_TAB"},
|
||||
|
|
Loading…
Reference in New Issue
Block a user