abapGit/src/objects/aff/zcl_abapgit_aff_registry.clas.abap
2024-05-15 08:04:47 +02:00

95 lines
2.1 KiB
ABAP

CLASS zcl_abapgit_aff_registry DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES:
zif_abapgit_aff_registry.
CONSTANTS c_aff_feature TYPE string VALUE 'AFF'.
METHODS constructor.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_registry_entry,
obj_type TYPE tadir-object,
experimental TYPE abap_bool,
END OF ty_registry_entry.
CLASS-DATA:
gt_registry TYPE HASHED TABLE OF ty_registry_entry WITH UNIQUE KEY obj_type.
DATA mv_aff_enabled TYPE abap_bool.
CLASS-METHODS initialize_registry_table.
CLASS-METHODS:
register
IMPORTING
iv_obj_type TYPE tadir-object
iv_experimental TYPE abap_bool DEFAULT abap_false.
ENDCLASS.
CLASS ZCL_ABAPGIT_AFF_REGISTRY IMPLEMENTATION.
METHOD constructor.
mv_aff_enabled = zcl_abapgit_feature=>is_enabled( c_aff_feature ).
ENDMETHOD.
METHOD initialize_registry_table.
register( 'CDBO' ).
register( 'CHKC' ).
register( 'CHKO' ).
register( 'CHKV' ).
register( 'DRTY' ).
register( 'DTEB' ).
register( 'EVTB' ).
register( 'EEEC' ).
register( 'GSMP' ).
register( iv_obj_type = 'INTF'
iv_experimental = abap_true ).
register( 'SMBC' ).
register( 'NONT' ).
register( 'RONT' ).
register( 'UIPG' ).
register( 'UIST' ).
ENDMETHOD.
METHOD register.
DATA ls_registry_entry TYPE ty_registry_entry.
ls_registry_entry-obj_type = iv_obj_type.
ls_registry_entry-experimental = iv_experimental.
INSERT ls_registry_entry INTO TABLE gt_registry.
ENDMETHOD.
METHOD zif_abapgit_aff_registry~is_supported_object_type.
DATA ls_registry_entry TYPE ty_registry_entry.
IF gt_registry IS INITIAL.
initialize_registry_table( ).
ENDIF.
READ TABLE gt_registry WITH TABLE KEY obj_type = iv_obj_type INTO ls_registry_entry.
IF sy-subrc = 0 AND ls_registry_entry-experimental = abap_false.
rv_result = abap_true.
ELSEIF sy-subrc = 0 AND mv_aff_enabled = abap_true.
rv_result = abap_true.
ELSE.
rv_result = abap_false.
ENDIF.
ENDMETHOD.
ENDCLASS.