move longtexts under interface (#3607)

* move longtexts under interface

adds interface for the longtext class

* fix

* longtexts, remove the constructor

* add injector method for longtexts
This commit is contained in:
Lars Hvam 2020-07-12 08:39:53 +02:00 committed by GitHub
parent cd9ea97a63
commit 5139ef8507
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 192 additions and 204 deletions

View File

@ -1,172 +1,41 @@
CLASS zcl_abapgit_longtexts DEFINITION
PUBLIC
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_factory.
GLOBAL FRIENDS zcl_abapgit_factory .
PUBLIC SECTION.
METHODS:
constructor
IMPORTING
iv_longtexts_name TYPE string OPTIONAL,
changed_by
IMPORTING
iv_object_name TYPE sobj_name
iv_longtext_id TYPE dokil-id
it_dokil TYPE zif_abapgit_definitions=>tty_dokil OPTIONAL
RETURNING
VALUE(rv_user) TYPE xubname
RAISING
zcx_abapgit_exception,
serialize
IMPORTING
iv_object_name TYPE sobj_name
iv_longtext_id TYPE dokil-id
it_dokil TYPE zif_abapgit_definitions=>tty_dokil OPTIONAL
io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception,
deserialize
IMPORTING
io_xml TYPE REF TO zcl_abapgit_xml_input
iv_master_language TYPE langu
RAISING
zcx_abapgit_exception,
delete
IMPORTING
iv_object_name TYPE sobj_name
iv_longtext_id TYPE dokil-id
RAISING
zcx_abapgit_exception.
INTERFACES zif_abapgit_longtexts .
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_longtext,
dokil TYPE dokil,
head TYPE thead,
lines TYPE tline_tab,
END OF ty_longtext,
END OF ty_longtext .
TYPES:
tty_longtexts TYPE STANDARD TABLE OF ty_longtext
WITH NON-UNIQUE DEFAULT KEY.
WITH NON-UNIQUE DEFAULT KEY .
CONSTANTS:
c_longtexts_name TYPE string VALUE 'LONGTEXTS' ##NO_TEXT,
c_docu_state_active TYPE dokstate VALUE 'A' ##NO_TEXT.
DATA:
mv_longtexts_name TYPE string.
METHODS:
read
IMPORTING
iv_object_name TYPE sobj_name
iv_longtext_id TYPE dokil-id
it_dokil TYPE zif_abapgit_definitions=>tty_dokil
iv_master_lang_only TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(rt_longtexts) TYPE tty_longtexts
RAISING
zcx_abapgit_exception.
METHODS read
IMPORTING
!iv_object_name TYPE sobj_name
!iv_longtext_id TYPE dokil-id
!it_dokil TYPE zif_abapgit_definitions=>tty_dokil
!iv_master_lang_only TYPE abap_bool DEFAULT abap_false
RETURNING
VALUE(rt_longtexts) TYPE tty_longtexts
RAISING
zcx_abapgit_exception .
PRIVATE SECTION.
CONSTANTS c_docu_state_active TYPE dokstate VALUE 'A' ##NO_TEXT.
ENDCLASS.
CLASS zcl_abapgit_longtexts IMPLEMENTATION.
METHOD changed_by.
DATA: lt_longtexts TYPE tty_longtexts.
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext.
lt_longtexts = read( iv_object_name = iv_object_name
iv_longtext_id = iv_longtext_id
it_dokil = it_dokil ).
READ TABLE lt_longtexts INDEX 1 ASSIGNING <ls_longtext>.
IF sy-subrc = 0.
rv_user = <ls_longtext>-head-tdluser.
ENDIF.
ENDMETHOD.
METHOD constructor.
IF iv_longtexts_name IS NOT INITIAL.
mv_longtexts_name = iv_longtexts_name.
ELSE.
mv_longtexts_name = c_longtexts_name.
ENDIF.
ENDMETHOD.
METHOD delete.
DATA: lt_dokil TYPE zif_abapgit_definitions=>tty_dokil.
FIELD-SYMBOLS: <ls_dokil> TYPE dokil.
SELECT * FROM dokil
INTO TABLE lt_dokil
WHERE id = iv_longtext_id
AND object = iv_object_name.
LOOP AT lt_dokil ASSIGNING <ls_dokil>.
CALL FUNCTION 'DOCU_DEL'
EXPORTING
id = <ls_dokil>-id
langu = <ls_dokil>-langu
object = <ls_dokil>-object
typ = <ls_dokil>-typ
EXCEPTIONS
ret_code = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD deserialize.
DATA: lt_longtexts TYPE tty_longtexts,
lv_no_masterlang TYPE dokil-masterlang.
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext.
io_xml->read(
EXPORTING
iv_name = mv_longtexts_name
CHANGING
cg_data = lt_longtexts ).
LOOP AT lt_longtexts ASSIGNING <ls_longtext>.
lv_no_masterlang = boolc( iv_master_language <> <ls_longtext>-dokil-langu ).
CALL FUNCTION 'DOCU_UPDATE'
EXPORTING
head = <ls_longtext>-head
state = c_docu_state_active
typ = <ls_longtext>-dokil-typ
version = <ls_longtext>-dokil-version
no_masterlang = lv_no_masterlang
TABLES
line = <ls_longtext>-lines.
ENDLOOP.
ENDMETHOD.
CLASS ZCL_ABAPGIT_LONGTEXTS IMPLEMENTATION.
METHOD read.
@ -236,7 +105,86 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
ENDMETHOD.
METHOD serialize.
METHOD zif_abapgit_longtexts~changed_by.
DATA: lt_longtexts TYPE tty_longtexts.
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext.
lt_longtexts = read( iv_object_name = iv_object_name
iv_longtext_id = iv_longtext_id
it_dokil = it_dokil ).
READ TABLE lt_longtexts INDEX 1 ASSIGNING <ls_longtext>.
IF sy-subrc = 0.
rv_user = <ls_longtext>-head-tdluser.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_longtexts~delete.
DATA: lt_dokil TYPE zif_abapgit_definitions=>tty_dokil.
FIELD-SYMBOLS: <ls_dokil> TYPE dokil.
SELECT * FROM dokil
INTO TABLE lt_dokil
WHERE id = iv_longtext_id
AND object = iv_object_name.
LOOP AT lt_dokil ASSIGNING <ls_dokil>.
CALL FUNCTION 'DOCU_DEL'
EXPORTING
id = <ls_dokil>-id
langu = <ls_dokil>-langu
object = <ls_dokil>-object
typ = <ls_dokil>-typ
EXCEPTIONS
ret_code = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD zif_abapgit_longtexts~deserialize.
DATA: lt_longtexts TYPE tty_longtexts,
lv_no_masterlang TYPE dokil-masterlang.
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtext.
io_xml->read(
EXPORTING
iv_name = iv_longtext_name
CHANGING
cg_data = lt_longtexts ).
LOOP AT lt_longtexts ASSIGNING <ls_longtext>.
lv_no_masterlang = boolc( iv_master_language <> <ls_longtext>-dokil-langu ).
CALL FUNCTION 'DOCU_UPDATE'
EXPORTING
head = <ls_longtext>-head
state = c_docu_state_active
typ = <ls_longtext>-dokil-typ
version = <ls_longtext>-dokil-version
no_masterlang = lv_no_masterlang
TABLES
line = <ls_longtext>-lines.
ENDLOOP.
ENDMETHOD.
METHOD zif_abapgit_longtexts~serialize.
DATA lt_longtexts TYPE tty_longtexts.
DATA lt_dokil LIKE it_dokil.
@ -253,10 +201,8 @@ CLASS zcl_abapgit_longtexts IMPLEMENTATION.
it_dokil = lt_dokil
iv_master_lang_only = lv_master_lang_only ).
io_xml->add( iv_name = mv_longtexts_name
io_xml->add( iv_name = iv_longtext_name
ig_data = lt_longtexts ).
ENDMETHOD.
ENDCLASS.

View File

@ -11,25 +11,23 @@ CLASS zcl_abapgit_object_doct DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS:
c_id TYPE dokhl-id VALUE 'TX',
c_name TYPE string VALUE 'DOC'.
DATA:
mo_longtexts TYPE REF TO zcl_abapgit_longtexts.
TYPES:
BEGIN OF ty_data,
doctitle TYPE dsyst-doktitle,
head TYPE thead,
lines TYPE tline_tab,
END OF ty_data.
END OF ty_data .
CONSTANTS c_id TYPE dokhl-id VALUE 'TX' ##NO_TEXT.
CONSTANTS c_name TYPE string VALUE 'DOC' ##NO_TEXT.
DATA mi_longtexts TYPE REF TO zif_abapgit_longtexts .
ENDCLASS.
CLASS zcl_abapgit_object_doct IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_DOCT IMPLEMENTATION.
METHOD constructor.
@ -37,14 +35,14 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
is_item = is_item
iv_language = iv_language ).
mo_longtexts = zcl_abapgit_factory=>get_longtexts( c_name ).
mi_longtexts = zcl_abapgit_factory=>get_longtexts( ).
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
rv_user = mo_longtexts->changed_by(
rv_user = mi_longtexts->changed_by(
iv_object_name = ms_item-obj_name
iv_longtext_id = c_id ).
@ -57,7 +55,7 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
METHOD zif_abapgit_object~delete.
mo_longtexts->delete(
mi_longtexts->delete(
iv_object_name = ms_item-obj_name
iv_longtext_id = c_id ).
@ -66,7 +64,8 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
mo_longtexts->deserialize(
mi_longtexts->deserialize(
iv_longtext_name = c_name
io_xml = io_xml
iv_master_language = mv_language ).
@ -167,7 +166,8 @@ CLASS zcl_abapgit_object_doct IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
mo_longtexts->serialize(
mi_longtexts->serialize(
iv_longtext_name = c_name
iv_object_name = ms_item-obj_name
iv_longtext_id = c_id
io_xml = io_xml ).

View File

@ -0,0 +1,36 @@
INTERFACE zif_abapgit_longtexts
PUBLIC .
METHODS changed_by
IMPORTING
!iv_object_name TYPE sobj_name
!iv_longtext_id TYPE dokil-id
!it_dokil TYPE zif_abapgit_definitions=>tty_dokil OPTIONAL
RETURNING
VALUE(rv_user) TYPE xubname
RAISING
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=>tty_dokil OPTIONAL
!io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize
IMPORTING
!iv_longtext_name TYPE string DEFAULT 'LONGTEXTS'
!io_xml TYPE REF TO zcl_abapgit_xml_input
!iv_master_language TYPE langu
RAISING
zcx_abapgit_exception .
METHODS delete
IMPORTING
!iv_object_name TYPE sobj_name
!iv_longtext_id TYPE dokil-id
RAISING
zcx_abapgit_exception .
ENDINTERFACE.

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_LONGTEXTS</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>abapGit long text serialization/deserialization</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,8 +1,10 @@
CLASS zcl_abapgit_factory DEFINITION
PUBLIC
CREATE PRIVATE
GLOBAL FRIENDS zcl_abapgit_injector.
GLOBAL FRIENDS zcl_abapgit_injector .
PUBLIC SECTION.
CLASS-METHODS get_tadir
RETURNING
VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir .
@ -35,11 +37,8 @@ CLASS zcl_abapgit_factory DEFINITION
RETURNING
VALUE(ri_environment) TYPE REF TO zif_abapgit_environment .
CLASS-METHODS get_longtexts
IMPORTING
iv_longtexts_name TYPE string OPTIONAL
RETURNING
VALUE(ro_longtexts) TYPE REF TO zcl_abapgit_longtexts.
VALUE(ri_longtexts) TYPE REF TO zif_abapgit_longtexts .
PROTECTED SECTION.
PRIVATE SECTION.
@ -50,7 +49,7 @@ CLASS zcl_abapgit_factory DEFINITION
END OF ty_sap_package .
TYPES:
tty_sap_package TYPE HASHED TABLE OF ty_sap_package
WITH UNIQUE KEY package .
WITH UNIQUE KEY package .
TYPES:
BEGIN OF ty_code_inspector,
package TYPE devclass,
@ -58,8 +57,7 @@ CLASS zcl_abapgit_factory DEFINITION
END OF ty_code_inspector .
TYPES:
tty_code_inspector TYPE HASHED TABLE OF ty_code_inspector
WITH UNIQUE KEY package .
WITH UNIQUE KEY package .
TYPES:
BEGIN OF ty_longtexts,
longtexts_name TYPE string,
@ -67,19 +65,20 @@ CLASS zcl_abapgit_factory DEFINITION
END OF ty_longtexts .
TYPES:
tty_longtexts TYPE HASHED TABLE OF ty_longtexts
WITH UNIQUE KEY longtexts_name .
WITH UNIQUE KEY longtexts_name .
CLASS-DATA gi_tadir TYPE REF TO zif_abapgit_tadir .
CLASS-DATA gt_sap_package TYPE tty_sap_package .
CLASS-DATA gt_code_inspector TYPE tty_code_inspector .
CLASS-DATA gi_stage_logic TYPE REF TO zif_abapgit_stage_logic .
CLASS-DATA gi_cts_api TYPE REF TO zif_abapgit_cts_api .
CLASS-DATA gi_environment TYPE REF TO zif_abapgit_environment .
CLASS-DATA gt_longtexts TYPE tty_longtexts.
CLASS-DATA gi_longtext TYPE REF TO zif_abapgit_longtexts .
ENDCLASS.
CLASS zcl_abapgit_factory IMPLEMENTATION.
CLASS ZCL_ABAPGIT_FACTORY IMPLEMENTATION.
METHOD get_branch_overview.
@ -134,6 +133,16 @@ CLASS zcl_abapgit_factory IMPLEMENTATION.
ENDMETHOD.
METHOD get_longtexts.
IF gi_longtext IS NOT BOUND.
CREATE OBJECT gi_longtext TYPE zcl_abapgit_longtexts.
ENDIF.
ri_longtexts = gi_longtext.
ENDMETHOD.
METHOD get_sap_package.
DATA: ls_sap_package TYPE ty_sap_package.
@ -180,30 +189,4 @@ CLASS zcl_abapgit_factory IMPLEMENTATION.
ri_tadir = gi_tadir.
ENDMETHOD.
METHOD get_longtexts.
DATA: ls_longtext TYPE ty_longtexts.
FIELD-SYMBOLS: <ls_longtext> TYPE ty_longtexts.
READ TABLE gt_longtexts ASSIGNING <ls_longtext>
WITH TABLE KEY longtexts_name = iv_longtexts_name.
IF sy-subrc <> 0.
ls_longtext-longtexts_name = iv_longtexts_name.
CREATE OBJECT ls_longtext-instance
EXPORTING
iv_longtexts_name = iv_longtexts_name.
INSERT ls_longtext
INTO TABLE gt_longtexts
ASSIGNING <ls_longtext>.
ENDIF.
ro_longtexts = <ls_longtext>-instance.
ENDMETHOD.
ENDCLASS.

View File

@ -25,6 +25,9 @@ CLASS zcl_abapgit_injector DEFINITION
CLASS-METHODS set_environment
IMPORTING
!ii_environment TYPE REF TO zif_abapgit_environment .
CLASS-METHODS set_longtexts
IMPORTING
!ii_longtexts TYPE REF TO zif_abapgit_longtexts .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -67,6 +70,11 @@ CLASS ZCL_ABAPGIT_INJECTOR IMPLEMENTATION.
ENDMETHOD.
METHOD set_longtexts.
zcl_abapgit_factory=>gi_longtext = ii_longtexts.
ENDMETHOD.
METHOD set_sap_package.
DATA: ls_sap_package TYPE zcl_abapgit_factory=>ty_sap_package.