diff --git a/src/ui/zcl_abapgit_popups.clas.abap b/src/ui/zcl_abapgit_popups.clas.abap index 2f7003742..761bef5e1 100644 --- a/src/ui/zcl_abapgit_popups.clas.abap +++ b/src/ui/zcl_abapgit_popups.clas.abap @@ -721,7 +721,7 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION. TRANSLATE -value TO UPPER CASE. rs_tadir-obj_name = -value. - rs_tadir = zcl_abapgit_tadir=>read_single( + rs_tadir = zcl_abapgit_factory=>get_tadir( )->read_single( iv_object = rs_tadir-object iv_obj_name = rs_tadir-obj_name ). diff --git a/src/ui/zcl_abapgit_services_repo.clas.abap b/src/ui/zcl_abapgit_services_repo.clas.abap index d06af1ade..39bb98686 100644 --- a/src/ui/zcl_abapgit_services_repo.clas.abap +++ b/src/ui/zcl_abapgit_services_repo.clas.abap @@ -288,7 +288,7 @@ CLASS ZCL_ABAPGIT_SERVICES_REPO IMPLEMENTATION. lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( iv_key ). lv_package = lo_repo->get_package( ). - lt_tadir = zcl_abapgit_tadir=>read( lv_package ). + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( lv_package ). IF lines( lt_tadir ) > 0. diff --git a/src/zcl_abapgit_factory.clas.abap b/src/zcl_abapgit_factory.clas.abap new file mode 100644 index 000000000..466248785 --- /dev/null +++ b/src/zcl_abapgit_factory.clas.abap @@ -0,0 +1,30 @@ +CLASS zcl_abapgit_factory DEFINITION + PUBLIC + CREATE PUBLIC . + + PUBLIC SECTION. + + CLASS-DATA gi_tadir TYPE REF TO zif_abapgit_tadir . + + CLASS-METHODS get_tadir + RETURNING + VALUE(ri_tadir) TYPE REF TO zif_abapgit_tadir . + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_FACTORY IMPLEMENTATION. + + + METHOD get_tadir. + + IF gi_tadir IS INITIAL. + CREATE OBJECT gi_tadir TYPE zcl_abapgit_tadir. + ENDIF. + + ri_tadir = gi_tadir. + + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_abapgit_factory.clas.xml b/src/zcl_abapgit_factory.clas.xml new file mode 100644 index 000000000..b92211da3 --- /dev/null +++ b/src/zcl_abapgit_factory.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_FACTORY + 1 + E + Factory + 2 + 1 + X + X + X + + + + diff --git a/src/zcl_abapgit_file_status.clas.abap b/src/zcl_abapgit_file_status.clas.abap index d0507ba86..4f0b8da84 100644 --- a/src/zcl_abapgit_file_status.clas.abap +++ b/src/zcl_abapgit_file_status.clas.abap @@ -236,9 +236,9 @@ CLASS ZCL_ABAPGIT_FILE_STATUS IMPLEMENTATION. CHECK lv_is_xml = abap_true. " Skip all but obj definitions - ls_item-devclass = zcl_abapgit_tadir=>get_object_package( - iv_object = ls_item-obj_type - iv_obj_name = ls_item-obj_name ). + ls_item-devclass = zcl_abapgit_factory=>get_tadir( )->get_object_package( + iv_object = ls_item-obj_type + iv_obj_name = ls_item-obj_name ). IF NOT ls_item-devclass IS INITIAL AND iv_devclass <> ls_item-devclass. * make sure the package is under the repo main package diff --git a/src/zcl_abapgit_objects.clas.abap b/src/zcl_abapgit_objects.clas.abap index 3ec8f6bd2..793a947ff 100644 --- a/src/zcl_abapgit_objects.clas.abap +++ b/src/zcl_abapgit_objects.clas.abap @@ -893,7 +893,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. io_dot = io_repo->get_dot_abapgit( ) iv_path = -path ). - ls_tadir = zcl_abapgit_tadir=>read_single( + ls_tadir = zcl_abapgit_factory=>get_tadir( )->read_single( iv_object = -obj_type iv_obj_name = -obj_name ). diff --git a/src/zcl_abapgit_objects.clas.testclasses.abap b/src/zcl_abapgit_objects.clas.testclasses.abap index 32890db8d..cc400bdbd 100644 --- a/src/zcl_abapgit_objects.clas.testclasses.abap +++ b/src/zcl_abapgit_objects.clas.testclasses.abap @@ -64,7 +64,7 @@ CLASS ltcl_dangerous IMPLEMENTATION. lo_repo->status( ). lo_repo->deserialize( ls_checks ). - lt_tadir = zcl_abapgit_tadir=>read( c_package ). + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( c_package ). LOOP AT lt_types ASSIGNING . READ TABLE lt_tadir WITH KEY object = TRANSPORTING NO FIELDS. IF sy-subrc <> 0. @@ -85,7 +85,7 @@ CLASS ltcl_dangerous IMPLEMENTATION. ENDLOOP. zcl_abapgit_objects=>delete( lt_tadir ). - lt_tadir = zcl_abapgit_tadir=>read( c_package ). + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( c_package ). LOOP AT lt_tadir ASSIGNING . lv_msg = |Not deleted properly { -object } { -obj_name }|. cl_abap_unit_assert=>fail( diff --git a/src/zcl_abapgit_repo.clas.abap b/src/zcl_abapgit_repo.clas.abap index 1564cb7a7..669c6f3c4 100644 --- a/src/zcl_abapgit_repo.clas.abap +++ b/src/zcl_abapgit_repo.clas.abap @@ -125,7 +125,7 @@ ENDCLASS. -CLASS zcl_abapgit_repo IMPLEMENTATION. +CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. METHOD constructor. @@ -262,7 +262,7 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. iv_data = -file-data ). lt_cache = mt_local. - lt_tadir = zcl_abapgit_tadir=>read( + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( iv_package = get_package( ) iv_ignore_subpackages = get_local_settings( )-ignore_subpackages iv_only_local_objects = get_local_settings( )-only_local_objects @@ -609,5 +609,4 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. set( it_checksums = lt_checksums ). ENDMETHOD. " update_local_checksums - ENDCLASS. diff --git a/src/zcl_abapgit_repo_content_list.clas.abap b/src/zcl_abapgit_repo_content_list.clas.abap index 6ab245a2e..cd34c2c6c 100644 --- a/src/zcl_abapgit_repo_content_list.clas.abap +++ b/src/zcl_abapgit_repo_content_list.clas.abap @@ -108,7 +108,7 @@ CLASS ZCL_ABAPGIT_REPO_CONTENT_LIST IMPLEMENTATION. LIKE LINE OF lt_tadir. - lt_tadir = zcl_abapgit_tadir=>read( + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( iv_package = mo_repo->get_package( ) io_dot = mo_repo->get_dot_abapgit( ) ). diff --git a/src/zcl_abapgit_repo_online.clas.abap b/src/zcl_abapgit_repo_online.clas.abap index 77495e5b1..e600f8bc9 100644 --- a/src/zcl_abapgit_repo_online.clas.abap +++ b/src/zcl_abapgit_repo_online.clas.abap @@ -107,7 +107,7 @@ ENDCLASS. -CLASS zcl_abapgit_repo_online IMPLEMENTATION. +CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION. METHOD actualize_head_branch. @@ -215,8 +215,8 @@ CLASS zcl_abapgit_repo_online IMPLEMENTATION. lt_remote = get_files_remote( ). lt_status = status( ). - lv_package = me->get_package( ). - lt_tadir = zcl_abapgit_tadir=>read( lv_package ). + lv_package = get_package( ). + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( lv_package ). SORT lt_tadir BY pgmid ASCENDING object ASCENDING obj_name ASCENDING devclass ASCENDING. LOOP AT lt_status ASSIGNING diff --git a/src/zcl_abapgit_repo_srv.clas.abap b/src/zcl_abapgit_repo_srv.clas.abap index 826de4d5b..848671aa3 100644 --- a/src/zcl_abapgit_repo_srv.clas.abap +++ b/src/zcl_abapgit_repo_srv.clas.abap @@ -290,7 +290,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. zcx_abapgit_exception=>raise( 'Not authorized' ). ENDIF. - lt_tadir = zcl_abapgit_tadir=>read( io_repo->get_package( ) ). + lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( io_repo->get_package( ) ). zcl_abapgit_objects=>delete( lt_tadir ). diff --git a/src/zcl_abapgit_tadir.clas.abap b/src/zcl_abapgit_tadir.clas.abap index c43dbb9d4..cecbf07cb 100644 --- a/src/zcl_abapgit_tadir.clas.abap +++ b/src/zcl_abapgit_tadir.clas.abap @@ -1,55 +1,28 @@ CLASS zcl_abapgit_tadir DEFINITION PUBLIC FINAL - CREATE PUBLIC . + CREATE PUBLIC + + GLOBAL FRIENDS zcl_abapgit_factory . PUBLIC SECTION. - CLASS-METHODS read - IMPORTING - !iv_package TYPE tadir-devclass - !iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false - !iv_only_local_objects TYPE abap_bool DEFAULT abap_false - !io_dot TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL - !io_log TYPE REF TO zcl_abapgit_log OPTIONAL - RETURNING - VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt - RAISING - zcx_abapgit_exception . - CLASS-METHODS read_single - IMPORTING - !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' - !iv_object TYPE tadir-object - !iv_obj_name TYPE tadir-obj_name - RETURNING - VALUE(rs_tadir) TYPE tadir - RAISING - zcx_abapgit_exception . - CLASS-METHODS get_object_package - IMPORTING - !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' - !iv_object TYPE tadir-object - !iv_obj_name TYPE tadir-obj_name - RETURNING - VALUE(rv_devclass) TYPE tadir-devclass - RAISING - zcx_abapgit_exception . - + INTERFACES zif_abapgit_tadir . PRIVATE SECTION. - CLASS-METHODS exists + METHODS exists IMPORTING - is_item TYPE zif_abapgit_definitions=>ty_item + !is_item TYPE zif_abapgit_definitions=>ty_item RETURNING - VALUE(rv_exists) TYPE abap_bool. - CLASS-METHODS check_exists + VALUE(rv_exists) TYPE abap_bool . + METHODS check_exists IMPORTING !it_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt RETURNING VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING zcx_abapgit_exception . - CLASS-METHODS build + METHODS build IMPORTING !iv_package TYPE tadir-devclass !iv_top TYPE tadir-devclass @@ -65,7 +38,7 @@ ENDCLASS. -CLASS zcl_abapgit_tadir IMPLEMENTATION. +CLASS ZCL_ABAPGIT_TADIR IMPLEMENTATION. METHOD build. @@ -211,14 +184,15 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION. ENDMETHOD. - METHOD get_object_package. + METHOD zif_abapgit_tadir~get_object_package. DATA: ls_tadir TYPE tadir, ls_item TYPE zif_abapgit_definitions=>ty_item. - ls_tadir = read_single( iv_pgmid = iv_pgmid - iv_object = iv_object - iv_obj_name = iv_obj_name ). + ls_tadir = zif_abapgit_tadir~read_single( + iv_pgmid = iv_pgmid + iv_object = iv_object + iv_obj_name = iv_obj_name ). IF ls_tadir-delflag = 'X'. RETURN. "Mark for deletion -> return nothing @@ -233,10 +207,10 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION. rv_devclass = ls_tadir-devclass. - ENDMETHOD. "get_object_package. + ENDMETHOD. - METHOD read. + METHOD zif_abapgit_tadir~read. * start recursion * hmm, some problems here, should TADIR also build path? @@ -255,10 +229,10 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION. rt_tadir = check_exists( rt_tadir ). - ENDMETHOD. "read + ENDMETHOD. - METHOD read_single. + METHOD zif_abapgit_tadir~read_single. IF iv_object = 'SICF'. rs_tadir = zcl_abapgit_object_sicf=>read_tadir_sicf( @@ -271,5 +245,5 @@ CLASS zcl_abapgit_tadir IMPLEMENTATION. AND obj_name = iv_obj_name. "#EC CI_SUBRC ENDIF. - ENDMETHOD. "read_single + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_abapgit_transport.clas.abap b/src/zcl_abapgit_transport.clas.abap index 10ec2ab19..1a1a89bfd 100644 --- a/src/zcl_abapgit_transport.clas.abap +++ b/src/zcl_abapgit_transport.clas.abap @@ -115,7 +115,7 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION. lv_obj_name = -obj_name. ENDIF. - ls_tadir = zcl_abapgit_tadir=>read_single( + ls_tadir = zcl_abapgit_factory=>get_tadir( )->read_single( iv_object = lv_object iv_obj_name = lv_obj_name ). diff --git a/src/zif_abapgit_tadir.intf.abap b/src/zif_abapgit_tadir.intf.abap new file mode 100644 index 000000000..7649efde2 --- /dev/null +++ b/src/zif_abapgit_tadir.intf.abap @@ -0,0 +1,34 @@ +INTERFACE zif_abapgit_tadir + PUBLIC . + + + METHODS get_object_package + IMPORTING + !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' + !iv_object TYPE tadir-object + !iv_obj_name TYPE tadir-obj_name + RETURNING + VALUE(rv_devclass) TYPE tadir-devclass + RAISING + zcx_abapgit_exception . + METHODS read + IMPORTING + !iv_package TYPE tadir-devclass + !iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false + !iv_only_local_objects TYPE abap_bool DEFAULT abap_false + !io_dot TYPE REF TO zcl_abapgit_dot_abapgit OPTIONAL + !io_log TYPE REF TO zcl_abapgit_log OPTIONAL + RETURNING + VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt + RAISING + zcx_abapgit_exception . + METHODS read_single + IMPORTING + !iv_pgmid TYPE tadir-pgmid DEFAULT 'R3TR' + !iv_object TYPE tadir-object + !iv_obj_name TYPE tadir-obj_name + RETURNING + VALUE(rs_tadir) TYPE tadir + RAISING + zcx_abapgit_exception . +ENDINTERFACE. diff --git a/src/zif_abapgit_tadir.intf.xml b/src/zif_abapgit_tadir.intf.xml new file mode 100644 index 000000000..8b86827b7 --- /dev/null +++ b/src/zif_abapgit_tadir.intf.xml @@ -0,0 +1,16 @@ + + + + + + ZIF_ABAPGIT_TADIR + 1 + E + TADIR access + 2 + 1 + X + + + +