From 5b5e0492473e136d3ea89ec04b9f51e14747d058 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sun, 19 Jul 2015 15:08:59 +0200 Subject: [PATCH] refactoring for issue #95 --- zabapgit.abap | 117 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 78 insertions(+), 39 deletions(-) diff --git a/zabapgit.abap b/zabapgit.abap index 1d6bb3f83..a59d7ef51 100644 --- a/zabapgit.abap +++ b/zabapgit.abap @@ -3,7 +3,7 @@ REPORT zabapgit. * See https://github.com/larshp/abapGit/ CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v0.45'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v0.46'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -148,7 +148,7 @@ START-OF-SELECTION. PERFORM run. *----------------------------------------------------------------------* -* CLASS CX_LOCAL_EXCEPTION DEFINITION +* CLASS LCX_EXCEPTION DEFINITION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* @@ -163,7 +163,7 @@ CLASS lcx_exception DEFINITION INHERITING FROM cx_static_check FINAL. ENDCLASS. "CX_LOCAL_EXCEPTION DEFINITION *----------------------------------------------------------------------* -* CLASS CX_LOCAL_EXCEPTION IMPLEMENTATION +* CLASS LCX_EXCEPTION IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* @@ -176,6 +176,24 @@ CLASS lcx_exception IMPLEMENTATION. ENDCLASS. "lcx_exception IMPLEMENTATION +*----------------------------------------------------------------------* +* CLASS LCX_NOT_FOUND DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcx_not_found DEFINITION INHERITING FROM cx_static_check FINAL. + +ENDCLASS. "CX_LOCAL_EXCEPTION DEFINITION + +*----------------------------------------------------------------------* +* CLASS LCX_NOT_FOUND IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcx_not_found IMPLEMENTATION. + +ENDCLASS. + CLASS lcl_tadir DEFINITION FINAL. PUBLIC SECTION. @@ -3152,10 +3170,43 @@ CLASS lcl_object_smim DEFINITION INHERITING FROM lcl_objects_common FINAL. iv_filename TYPE string RETURNING VALUE(rv_filename) TYPE string. + CLASS-METHODS get_url_for_io + IMPORTING iv_loio TYPE sdok_docid + EXPORTING ev_url TYPE string + ev_is_folder TYPE boole_d + RAISING lcx_not_found + lcx_exception. + ENDCLASS. CLASS lcl_object_smim IMPLEMENTATION. + METHOD get_url_for_io. + + DATA: li_api TYPE REF TO if_mr_api. + + + li_api = cl_mime_repository_api=>if_mr_api~get_api( ). + + li_api->get_url_for_io( + EXPORTING + i_loio = iv_loio + IMPORTING + e_url = ev_url + e_is_folder = ev_is_folder + EXCEPTIONS + parameter_missing = 1 + error_occured = 2 + not_found = 3 + OTHERS = 4 ). + IF sy-subrc = 3. + RAISE EXCEPTION TYPE lcx_not_found. + ELSEIF sy-subrc <> 0. + _raise 'error from get_url_for_io'. + ENDIF. + + ENDMETHOD. + METHOD build_filename. CONCATENATE is_item-obj_name is_item-obj_type iv_filename @@ -3213,27 +3264,21 @@ CLASS lcl_object_smim IMPLEMENTATION. li_api = cl_mime_repository_api=>if_mr_api~get_api( ). lv_io = is_item-obj_name. - li_api->get_url_for_io( - EXPORTING - i_loio = lv_io - IMPORTING - e_url = lv_url - e_is_folder = lv_folder - EXCEPTIONS - parameter_missing = 1 - error_occured = 2 - not_found = 3 - OTHERS = 4 ). - IF sy-subrc = 3. - RETURN. - ELSEIF sy-subrc <> 0. - _raise 'error from get_url_for_io'. - ENDIF. + TRY. + get_url_for_io( + EXPORTING + iv_loio = lv_io + IMPORTING + ev_url = lv_url + ev_is_folder = lv_folder ). + CATCH lcx_not_found. + RETURN. + ENDTRY. IF lv_folder = abap_false. - li_api->get_by_io( + li_api->get( EXPORTING - i_loio = lv_io + i_url = lv_url IMPORTING e_content = lv_content EXCEPTIONS @@ -3243,7 +3288,7 @@ CLASS lcl_object_smim IMPLEMENTATION. permission_failure = 4 OTHERS = 5 ). IF sy-subrc <> 0. - _raise 'error from get_by_io'. + _raise 'error from mime api->get'. ENDIF. lv_filename = get_filename( lv_url ). @@ -3303,7 +3348,7 @@ CLASS lcl_object_smim IMPLEMENTATION. permission_failure = 4 folder_exists = 5 OTHERS = 6 ). - IF sy-subrc <> 0. + IF sy-subrc <> 5 AND sy-subrc <> 0. _raise 'error frrom SMIM create_folder'. ENDIF. ELSE. @@ -3351,27 +3396,21 @@ CLASS lcl_object_smim IMPLEMENTATION. li_api = cl_mime_repository_api=>if_mr_api~get_api( ). lv_io = is_item-obj_name. - li_api->get_url_for_io( - EXPORTING - i_loio = lv_io - IMPORTING - e_url = lv_url - EXCEPTIONS - parameter_missing = 1 - error_occured = 2 - not_found = 3 - OTHERS = 4 ). - IF sy-subrc = 3. - RETURN. - ELSEIF sy-subrc <> 0. - _raise 'error from get_url_for_io'. - ENDIF. + + TRY. + get_url_for_io( + EXPORTING + iv_loio = lv_io + IMPORTING + ev_url = lv_url ). + CATCH lcx_not_found. + RETURN. + ENDTRY. li_api->delete( EXPORTING i_url = lv_url i_delete_children = abap_true - i_suppress_dialogs = abap_true EXCEPTIONS parameter_missing = 1 error_occured = 2