diff --git a/src/objects/zcl_abapgit_object_pinf.clas.abap b/src/objects/zcl_abapgit_object_pinf.clas.abap index 5a225e707..0b1981fcf 100644 --- a/src/objects/zcl_abapgit_object_pinf.clas.abap +++ b/src/objects/zcl_abapgit_object_pinf.clas.abap @@ -19,43 +19,56 @@ CLASS zcl_abapgit_object_pinf DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje !is_pinf TYPE ty_pinf !iv_package TYPE devclass RETURNING - VALUE(ri_interface) TYPE REF TO if_package_interface + VALUE(ri_interface) TYPE REF TO lif_package_interface_facade RAISING zcx_abapgit_exception . METHODS delete_elements IMPORTING - !ii_interface TYPE REF TO if_package_interface + !ii_interface TYPE REF TO lif_package_interface_facade RAISING zcx_abapgit_exception . METHODS update_attributes IMPORTING !iv_package TYPE devclass !is_pinf TYPE ty_pinf - !ii_interface TYPE REF TO if_package_interface + !ii_interface TYPE REF TO lif_package_interface_facade RAISING zcx_abapgit_exception . METHODS update_elements IMPORTING - !is_pinf TYPE ty_pinf - !ii_interface TYPE REF TO if_package_interface + is_pinf TYPE ty_pinf + ii_interface TYPE REF TO lif_package_interface_facade RAISING zcx_abapgit_exception . + METHODS load + IMPORTING + iv_name TYPE scomifnam + RETURNING + VALUE(ri_interface) TYPE REF TO lif_package_interface_facade. + METHODS create_facade + IMPORTING + ii_interface TYPE REF TO if_package_interface + RETURNING + VALUE(ri_facade) TYPE REF TO lif_package_interface_facade. + ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. +CLASS zcl_abapgit_object_pinf IMPLEMENTATION. METHOD create_or_load. + DATA: li_interface TYPE REF TO if_package_interface. + IF zif_abapgit_object~exists( ) = abap_false. cl_package_interface=>create_new_package_interface( EXPORTING i_pkg_interface_name = is_pinf-attributes-intf_name i_publisher_pkg_name = iv_package IMPORTING - e_package_interface = ri_interface + e_package_interface = li_interface EXCEPTIONS object_already_existing = 1 object_just_created = 2 @@ -65,23 +78,13 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. IF sy-subrc <> 0. zcx_abapgit_exception=>raise( 'error creating new package interface' ). ENDIF. + + ri_interface = create_facade( li_interface ). + ELSE. - cl_package_interface=>load_package_interface( - EXPORTING - i_package_interface_name = is_pinf-attributes-intf_name - i_force_reload = abap_true - IMPORTING - e_package_interface = ri_interface - EXCEPTIONS - db_read_error = 1 - unexpected_error = 2 - object_not_existing = 3 - shorttext_not_existing = 4 - object_locked_and_modified = 5 - OTHERS = 6 ). - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error loading package interface' ). - ENDIF. + + ri_interface = load( is_pinf-attributes-intf_name ). + ENDIF. ENDMETHOD. @@ -96,7 +99,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. ii_interface->set_elements_changeable( abap_true ). - ii_interface->get_elements( IMPORTING e_elements = lt_elements ). + ii_interface->get_elements( IMPORTING et_elements = lt_elements ). LOOP AT lt_elements ASSIGNING . ->delete( ). @@ -113,7 +116,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. lv_changeable TYPE abap_bool. - ii_interface->get_changeable( IMPORTING e_changeable = lv_changeable ). + ii_interface->get_changeable( IMPORTING ev_changeable = lv_changeable ). IF lv_changeable = abap_false. * at creation the object is already in change mode ii_interface->set_changeable( abap_true ). @@ -129,8 +132,8 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. ls_sign-release_status = abap_true. ii_interface->set_all_attributes( - i_package_interface_data = is_pinf-attributes - i_data_sign = ls_sign ). + is_package_interface_data = is_pinf-attributes + is_data_sign = ls_sign ). set_default_package( iv_package ). * looks like setting "i_suppress_dialog = abap_true" will make @@ -148,27 +151,14 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. lt_add TYPE scomeldata, lv_index TYPE i, lv_found TYPE abap_bool, -* ls_sign TYPE scomelsign, ls_attr TYPE scomeldtln. FIELD-SYMBOLS: LIKE LINE OF lt_existing, LIKE LINE OF is_pinf-elements. - -* ls_sign-usag_restr = abap_true. -* ls_sign-stability = abap_true. -* ls_sign-no_check = abap_true. -* ls_sign-useastype = abap_true. -* ls_sign-asforgnkey = abap_true. -* ls_sign-deprecation_type = abap_true. backport -* ls_sign-replacement_object_type = abap_true. backport -* ls_sign-replacement_object_name = abap_true. backport -* ls_sign-replacement_subobject_type = abap_true. backport -* ls_sign-replacement_subobject_name = abap_true. backport - ii_interface->set_elements_changeable( abap_true ). - ii_interface->get_elements( IMPORTING e_elements = lt_existing ). + ii_interface->get_elements( IMPORTING et_elements = lt_existing ). LOOP AT is_pinf-elements ASSIGNING . @@ -217,27 +207,9 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. METHOD zif_abapgit_object~delete. - DATA: lv_name TYPE scomifnam, - li_interface TYPE REF TO if_package_interface. + DATA: li_interface TYPE REF TO lif_package_interface_facade. - - lv_name = ms_item-obj_name. - - cl_package_interface=>load_package_interface( - EXPORTING - i_package_interface_name = lv_name - IMPORTING - e_package_interface = li_interface - EXCEPTIONS - db_read_error = 1 - unexpected_error = 2 - object_not_existing = 3 - shorttext_not_existing = 4 - object_locked_and_modified = 5 - OTHERS = 6 ). - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error loading package interface, delete' ). - ENDIF. + li_interface = load( |{ ms_item-obj_name }| ). * elements must be deleted before the package interface * can be deleted @@ -254,7 +226,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. METHOD zif_abapgit_object~deserialize. - DATA: li_interface TYPE REF TO if_package_interface, + DATA: li_interface TYPE REF TO lif_package_interface_facade, ls_pinf TYPE ty_pinf. @@ -262,7 +234,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. CHANGING cg_data = ls_pinf ). li_interface = create_or_load( - is_pinf = ls_pinf + is_pinf = ls_pinf iv_package = iv_package ). update_attributes( @@ -339,26 +311,17 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. METHOD zif_abapgit_object~serialize. DATA: ls_pinf TYPE ty_pinf, - lv_name TYPE scomifnam, lt_elements TYPE ty_elements, - li_interface TYPE REF TO if_package_interface. + li_interface TYPE REF TO lif_package_interface_facade. FIELD-SYMBOLS: TYPE any, LIKE LINE OF lt_elements, LIKE LINE OF ls_pinf-elements. - - lv_name = ms_item-obj_name. - - cl_package_interface=>load_package_interface( - EXPORTING - i_package_interface_name = lv_name - i_force_reload = abap_true - IMPORTING - e_package_interface = li_interface ). + li_interface = load( |{ ms_item-obj_name }| ). li_interface->get_all_attributes( - IMPORTING e_package_interface_data = ls_pinf-attributes ). + IMPORTING es_package_interface_data = ls_pinf-attributes ). CLEAR: ls_pinf-attributes-pack_name, ls_pinf-attributes-author, @@ -378,7 +341,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. CLEAR . ENDIF. - li_interface->get_elements( IMPORTING e_elements = lt_elements ). + li_interface->get_elements( IMPORTING et_elements = lt_elements ). LOOP AT lt_elements ASSIGNING . APPEND INITIAL LINE TO ls_pinf-elements ASSIGNING . @@ -390,4 +353,29 @@ CLASS ZCL_ABAPGIT_OBJECT_PINF IMPLEMENTATION. iv_name = 'PINF' ). ENDMETHOD. + + METHOD load. + + DATA: li_interface TYPE REF TO if_package_interface. + + cl_package_interface=>load_package_interface( + EXPORTING + i_package_interface_name = iv_name + i_force_reload = abap_true + IMPORTING + e_package_interface = li_interface ). + + ri_interface = create_facade( li_interface ). + + ENDMETHOD. + + + METHOD create_facade. + + CREATE OBJECT ri_facade TYPE lcl_package_interface_facade + EXPORTING + ii_interface = ii_interface. + + ENDMETHOD. + ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_pinf.clas.locals_def.abap b/src/objects/zcl_abapgit_object_pinf.clas.locals_def.abap new file mode 100644 index 000000000..222a6bfaa --- /dev/null +++ b/src/objects/zcl_abapgit_object_pinf.clas.locals_def.abap @@ -0,0 +1,91 @@ +INTERFACE lif_package_interface_facade. + + METHODS: + get_elements + IMPORTING + iv_with_deleted_elements TYPE flag DEFAULT 'X' + EXPORTING + et_elements TYPE tpak_package_interf_elem_list + RAISING + zcx_abapgit_exception, + + set_elements_changeable + IMPORTING + VALUE(iv_changeable) TYPE flag + RAISING + zcx_abapgit_exception, + + save_elements + IMPORTING + iv_transport_request TYPE trkorr OPTIONAL + iv_suppress_dialog TYPE flag DEFAULT ' ' + RAISING + zcx_abapgit_exception, + + get_all_attributes + EXPORTING + es_package_interface_data TYPE scompidtln + RAISING + zcx_abapgit_exception, + + set_changeable + IMPORTING + VALUE(iv_changeable) TYPE flag + RAISING + zcx_abapgit_exception, + + delete + IMPORTING + iv_suppress_dialog TYPE flag DEFAULT abap_false + RAISING + zcx_abapgit_exception, + + save + IMPORTING + iv_transport_request TYPE trkorr OPTIONAL + iv_suppress_dialog TYPE flag DEFAULT ' ' + RAISING + zcx_abapgit_exception, + + remove_elements + IMPORTING + it_elements TYPE tpak_package_interf_elem_list + RAISING + zcx_abapgit_exception, + + add_elements + IMPORTING + is_elements_data TYPE scomeldata + RAISING + zcx_abapgit_exception, + + set_all_attributes + IMPORTING + is_package_interface_data TYPE scompidtln + is_data_sign TYPE scompisign + RAISING + zcx_abapgit_exception, + + get_changeable + EXPORTING + VALUE(ev_changeable) TYPE flag + RAISING + zcx_abapgit_exception. + +ENDINTERFACE. + +CLASS lcl_package_interface_facade DEFINITION. + + PUBLIC SECTION. + INTERFACES: + lif_package_interface_facade. + + METHODS: + constructor + IMPORTING + ii_interface TYPE REF TO if_package_interface. + + PRIVATE SECTION. + DATA: mi_interface TYPE REF TO if_package_interface. + +ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_pinf.clas.locals_imp.abap b/src/objects/zcl_abapgit_object_pinf.clas.locals_imp.abap new file mode 100644 index 000000000..302b71f70 --- /dev/null +++ b/src/objects/zcl_abapgit_object_pinf.clas.locals_imp.abap @@ -0,0 +1,213 @@ +CLASS lcl_package_interface_facade IMPLEMENTATION. + + METHOD constructor. + + mi_interface = ii_interface. + + ENDMETHOD. + + METHOD lif_package_interface_facade~get_elements. + + mi_interface->get_elements( + IMPORTING + e_elements = et_elements + EXCEPTIONS + object_invalid = 1 + intern_err = 2 + OTHERS = 3 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~set_elements_changeable. + + mi_interface->set_elements_changeable( + EXPORTING + i_changeable = iv_changeable + EXCEPTIONS + object_already_changeable = 1 + object_already_unlocked = 2 + object_locked_by_other_user = 3 + object_modified = 4 + object_just_created = 5 + object_deleted = 6 + permission_failure = 7 + object_invalid = 8 + unexpected_error = 9 + OTHERS = 10 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~save_elements. + + mi_interface->save_elements( + EXCEPTIONS + object_not_changeable = 1 + object_invalid = 2 + cancelled_in_corr = 3 + permission_failure = 4 + unexpected_error = 5 + intern_err = 6 + OTHERS = 7 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~get_all_attributes. + + mi_interface->get_all_attributes( + IMPORTING + e_package_interface_data = es_package_interface_data + EXCEPTIONS + object_invalid = 1 + OTHERS = 2 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~set_changeable. + + mi_interface->set_changeable( + EXPORTING + i_changeable = iv_changeable + EXCEPTIONS + object_locked_by_other_user = 1 + permission_failure = 2 + object_already_changeable = 3 + object_already_unlocked = 4 + object_just_created = 5 + object_deleted = 6 + object_modified = 7 + object_not_existing = 8 + object_invalid = 9 + unexpected_error = 10 + OTHERS = 11 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~delete. + + mi_interface->delete( + EXCEPTIONS + object_not_empty = 1 + object_not_changeable = 2 + object_invalid = 3 + intern_err = 4 + OTHERS = 5 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~save. + + mi_interface->save( + EXCEPTIONS + short_text_missing = 1 + object_not_changeable = 2 + object_invalid = 3 + cancelled_in_corr = 4 + permission_failure = 5 + unexpected_error = 6 + intern_err = 7 + OTHERS = 8 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~remove_elements. + + mi_interface->remove_elements( + EXPORTING + i_elements = it_elements + EXCEPTIONS + object_deleted = 1 + object_invalid = 2 + object_not_changeable = 3 + element_not_contained = 4 + intern_err = 5 + OTHERS = 6 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~add_elements. + + mi_interface->add_elements( + EXPORTING + i_elements_data = is_elements_data + EXCEPTIONS + object_invalid = 1 + intern_err = 2 + OTHERS = 3 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~set_all_attributes. + + mi_interface->set_all_attributes( + EXPORTING + i_package_interface_data = is_package_interface_data + i_data_sign = is_data_sign + EXCEPTIONS + object_deleted = 1 + object_not_changeable = 2 + interface_not_empty = 3 + acl_not_empty = 4 + author_not_existing = 5 + object_type_mismatch = 6 + logical_package_types_differ = 7 + object_invalid = 8 + OTHERS = 9 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + METHOD lif_package_interface_facade~get_changeable. + + mi_interface->get_changeable( + IMPORTING + e_changeable = ev_changeable + EXCEPTIONS + object_invalid = 1 + OTHERS = 2 ). + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + +ENDCLASS.