From 5139ef8507be6e9bbe4d8406e964a8cb53048288 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sun, 12 Jul 2020 08:39:53 +0200 Subject: [PATCH] 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 --- src/objects/zcl_abapgit_longtexts.clas.abap | 254 +++++++----------- src/objects/zcl_abapgit_object_doct.clas.abap | 26 +- src/objects/zif_abapgit_longtexts.intf.abap | 36 +++ src/objects/zif_abapgit_longtexts.intf.xml | 15 ++ src/zcl_abapgit_factory.clas.abap | 57 ++-- src/zcl_abapgit_injector.clas.abap | 8 + 6 files changed, 192 insertions(+), 204 deletions(-) create mode 100644 src/objects/zif_abapgit_longtexts.intf.abap create mode 100644 src/objects/zif_abapgit_longtexts.intf.xml diff --git a/src/objects/zcl_abapgit_longtexts.clas.abap b/src/objects/zcl_abapgit_longtexts.clas.abap index f22ad5950..98d3f52b0 100644 --- a/src/objects/zcl_abapgit_longtexts.clas.abap +++ b/src/objects/zcl_abapgit_longtexts.clas.abap @@ -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: 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 . - IF sy-subrc = 0. - rv_user = -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: TYPE dokil. - - SELECT * FROM dokil - INTO TABLE lt_dokil - WHERE id = iv_longtext_id - AND object = iv_object_name. - - LOOP AT lt_dokil ASSIGNING . - - CALL FUNCTION 'DOCU_DEL' - EXPORTING - id = -id - langu = -langu - object = -object - typ = -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: TYPE ty_longtext. - - io_xml->read( - EXPORTING - iv_name = mv_longtexts_name - CHANGING - cg_data = lt_longtexts ). - - LOOP AT lt_longtexts ASSIGNING . - - lv_no_masterlang = boolc( iv_master_language <> -dokil-langu ). - - CALL FUNCTION 'DOCU_UPDATE' - EXPORTING - head = -head - state = c_docu_state_active - typ = -dokil-typ - version = -dokil-version - no_masterlang = lv_no_masterlang - TABLES - line = -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: 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 . + IF sy-subrc = 0. + rv_user = -head-tdluser. + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_longtexts~delete. + + DATA: lt_dokil TYPE zif_abapgit_definitions=>tty_dokil. + FIELD-SYMBOLS: TYPE dokil. + + SELECT * FROM dokil + INTO TABLE lt_dokil + WHERE id = iv_longtext_id + AND object = iv_object_name. + + LOOP AT lt_dokil ASSIGNING . + + CALL FUNCTION 'DOCU_DEL' + EXPORTING + id = -id + langu = -langu + object = -object + typ = -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: TYPE ty_longtext. + + io_xml->read( + EXPORTING + iv_name = iv_longtext_name + CHANGING + cg_data = lt_longtexts ). + + LOOP AT lt_longtexts ASSIGNING . + + lv_no_masterlang = boolc( iv_master_language <> -dokil-langu ). + + CALL FUNCTION 'DOCU_UPDATE' + EXPORTING + head = -head + state = c_docu_state_active + typ = -dokil-typ + version = -dokil-version + no_masterlang = lv_no_masterlang + TABLES + line = -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. diff --git a/src/objects/zcl_abapgit_object_doct.clas.abap b/src/objects/zcl_abapgit_object_doct.clas.abap index 9d407b9fd..193d67a3f 100644 --- a/src/objects/zcl_abapgit_object_doct.clas.abap +++ b/src/objects/zcl_abapgit_object_doct.clas.abap @@ -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 ). diff --git a/src/objects/zif_abapgit_longtexts.intf.abap b/src/objects/zif_abapgit_longtexts.intf.abap new file mode 100644 index 000000000..5ec9d42fa --- /dev/null +++ b/src/objects/zif_abapgit_longtexts.intf.abap @@ -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. diff --git a/src/objects/zif_abapgit_longtexts.intf.xml b/src/objects/zif_abapgit_longtexts.intf.xml new file mode 100644 index 000000000..8f516b439 --- /dev/null +++ b/src/objects/zif_abapgit_longtexts.intf.xml @@ -0,0 +1,15 @@ + + + + + + ZIF_ABAPGIT_LONGTEXTS + E + abapGit long text serialization/deserialization + 2 + 1 + X + + + + diff --git a/src/zcl_abapgit_factory.clas.abap b/src/zcl_abapgit_factory.clas.abap index bd75a0c15..5b567f0b2 100644 --- a/src/zcl_abapgit_factory.clas.abap +++ b/src/zcl_abapgit_factory.clas.abap @@ -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: TYPE ty_longtexts. - - READ TABLE gt_longtexts ASSIGNING - 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 . - - ENDIF. - - ro_longtexts = -instance. - - ENDMETHOD. - ENDCLASS. diff --git a/src/zcl_abapgit_injector.clas.abap b/src/zcl_abapgit_injector.clas.abap index 7d7722523..a17d53e08 100644 --- a/src/zcl_abapgit_injector.clas.abap +++ b/src/zcl_abapgit_injector.clas.abap @@ -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.