From 996bed2603fb886662dd6680dac7f7f38bebc4e3 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 12 Jan 2018 12:14:50 +0000 Subject: [PATCH] lcl_persistence_db to global --- src/persist/package.devc.xml | 10 + .../zcl_abapgit_persistence_db.clas.abap | 199 +++++++++++ .../zcl_abapgit_persistence_db.clas.xml | 18 + src/zabapgit_app.prog.abap | 5 +- src/zabapgit_gui_router.prog.abap | 4 +- src/zabapgit_html_action_utils.prog.abap | 6 +- src/zabapgit_page_db.prog.abap | 20 +- src/zabapgit_page_main.prog.abap | 2 +- src/zabapgit_persistence.prog.abap | 311 ++++-------------- src/zabapgit_repo.prog.abap | 6 +- src/zabapgit_services_db.prog.abap | 4 +- src/zabapgit_services_repo.prog.abap | 2 +- src/zabapgit_view_repo.prog.abap | 2 +- src/zabapgit_zip.prog.abap | 2 +- 14 files changed, 312 insertions(+), 279 deletions(-) create mode 100644 src/persist/package.devc.xml create mode 100644 src/persist/zcl_abapgit_persistence_db.clas.abap create mode 100644 src/persist/zcl_abapgit_persistence_db.clas.xml diff --git a/src/persist/package.devc.xml b/src/persist/package.devc.xml new file mode 100644 index 000000000..5d9836271 --- /dev/null +++ b/src/persist/package.devc.xml @@ -0,0 +1,10 @@ + + + + + + Persistence + + + + diff --git a/src/persist/zcl_abapgit_persistence_db.clas.abap b/src/persist/zcl_abapgit_persistence_db.clas.abap new file mode 100644 index 000000000..1557606ba --- /dev/null +++ b/src/persist/zcl_abapgit_persistence_db.clas.abap @@ -0,0 +1,199 @@ +CLASS zcl_abapgit_persistence_db DEFINITION + PUBLIC + CREATE PUBLIC . + + PUBLIC SECTION. + CONSTANTS: + c_tabname TYPE tabname VALUE 'ZABAPGIT', + c_lock TYPE viewname VALUE 'EZABAPGIT'. + + TYPES: ty_type TYPE c LENGTH 12. + TYPES: ty_value TYPE c LENGTH 12. + + TYPES: BEGIN OF ty_content, + type TYPE ty_type, + value TYPE ty_value, + data_str TYPE string, + END OF ty_content, + tt_content TYPE SORTED TABLE OF ty_content WITH UNIQUE KEY type value. + + CONSTANTS: + c_type_settings TYPE ty_type VALUE 'SETTINGS', + c_type_repo TYPE ty_type VALUE 'REPO', + c_type_background TYPE ty_type VALUE 'BACKGROUND', + c_type_user TYPE ty_type VALUE 'USER'. + + METHODS: + list_by_type + IMPORTING iv_type TYPE ty_type + RETURNING VALUE(rt_content) TYPE tt_content, + list + RETURNING VALUE(rt_content) TYPE tt_content, + add + IMPORTING iv_type TYPE ty_type + iv_value TYPE ty_content-value + iv_data TYPE ty_content-data_str + RAISING zcx_abapgit_exception, + delete + IMPORTING iv_type TYPE ty_type + iv_value TYPE ty_content-value + RAISING zcx_abapgit_exception, + update + IMPORTING iv_type TYPE ty_type + iv_value TYPE ty_content-value + iv_data TYPE ty_content-data_str + RAISING zcx_abapgit_exception, + modify + IMPORTING iv_type TYPE ty_type + iv_value TYPE ty_content-value + iv_data TYPE ty_content-data_str + RAISING zcx_abapgit_exception, + read + IMPORTING iv_type TYPE ty_type + iv_value TYPE ty_content-value + RETURNING VALUE(rv_data) TYPE ty_content-data_str + RAISING zcx_abapgit_not_found, + lock + IMPORTING iv_mode TYPE enqmode DEFAULT 'E' + iv_type TYPE ty_type + iv_value TYPE ty_content-value + RAISING zcx_abapgit_exception. + + PRIVATE SECTION. + METHODS: validate_and_unprettify_xml + IMPORTING iv_xml TYPE string + RETURNING VALUE(rv_xml) TYPE string + RAISING zcx_abapgit_exception. + +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_PERSISTENCE_DB IMPLEMENTATION. + + + METHOD add. + +* todo, change instantiation back to private? make sure this class is a singleton? + + DATA ls_table TYPE ty_content. + + ls_table-type = iv_type. + ls_table-value = iv_value. + ls_table-data_str = iv_data. + + INSERT (c_tabname) FROM ls_table. "#EC CI_SUBRC + ASSERT sy-subrc = 0. + + ENDMETHOD. + + + METHOD delete. + + lock( iv_type = iv_type + iv_value = iv_value ). + + DELETE FROM (c_tabname) + WHERE type = iv_type + AND value = iv_value. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'DB Delete failed' ). + ENDIF. + + ENDMETHOD. + + + METHOD list. + SELECT * FROM (c_tabname) + INTO TABLE rt_content. "#EC CI_SUBRC + ENDMETHOD. + + + METHOD list_by_type. + SELECT * FROM (c_tabname) + INTO TABLE rt_content + WHERE type = iv_type. "#EC CI_SUBRC + ENDMETHOD. + + + METHOD lock. + + CALL FUNCTION 'ENQUEUE_EZABAPGIT' + EXPORTING + mode_zabapgit = iv_mode + type = iv_type + value = iv_value + EXCEPTIONS + foreign_lock = 1 + system_failure = 2 + OTHERS = 3. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( |Could not aquire lock { iv_type } { iv_value }| ). + ENDIF. + +* trigger dummy update task to automatically release locks at commit + CALL FUNCTION 'BANK_OBJ_WORKL_RELEASE_LOCKS' + IN UPDATE TASK. + + ENDMETHOD. + + + METHOD modify. + + DATA: ls_content TYPE ty_content. + + lock( iv_type = iv_type + iv_value = iv_value ). + + ls_content-type = iv_type. + ls_content-value = iv_value. + ls_content-data_str = iv_data. + + MODIFY (c_tabname) FROM ls_content. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'DB modify failed' ). + ENDIF. + + ENDMETHOD. + + + METHOD read. + + SELECT SINGLE data_str FROM (c_tabname) INTO rv_data + WHERE type = iv_type + AND value = iv_value. "#EC CI_SUBRC + IF sy-subrc <> 0. + RAISE EXCEPTION TYPE zcx_abapgit_not_found. + ENDIF. + + ENDMETHOD. + + + METHOD update. + + DATA lv_data LIKE iv_data. + + lv_data = validate_and_unprettify_xml( iv_data ). + + lock( iv_type = iv_type + iv_value = iv_value ). + + UPDATE (c_tabname) SET data_str = lv_data + WHERE type = iv_type + AND value = iv_value. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'DB update failed' ). + ENDIF. + + ENDMETHOD. "update + + + METHOD validate_and_unprettify_xml. + + rv_xml = zcl_abapgit_xml_pretty=>print( + iv_xml = iv_xml + iv_unpretty = abap_true + iv_ignore_errors = abap_false ). + + ENDMETHOD. " validate_and_unprettify_xml +ENDCLASS. diff --git a/src/persist/zcl_abapgit_persistence_db.clas.xml b/src/persist/zcl_abapgit_persistence_db.clas.xml new file mode 100644 index 000000000..a0c49aa65 --- /dev/null +++ b/src/persist/zcl_abapgit_persistence_db.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_PERSISTENCE_DB + 1 + E + Database persistence + 2 + 1 + X + X + X + + + + diff --git a/src/zabapgit_app.prog.abap b/src/zabapgit_app.prog.abap index a11fe7f18..9c8b50b3b 100644 --- a/src/zabapgit_app.prog.abap +++ b/src/zabapgit_app.prog.abap @@ -5,7 +5,6 @@ CLASS lcl_gui DEFINITION DEFERRED. CLASS lcl_persistence_user DEFINITION DEFERRED. CLASS lcl_repo_srv DEFINITION DEFERRED. -CLASS lcl_persistence_db DEFINITION DEFERRED. CLASS lcl_persist_settings DEFINITION DEFERRED. CLASS lcl_proxy_configuration DEFINITION DEFERRED. @@ -28,7 +27,7 @@ CLASS lcl_app DEFINITION FINAL. RETURNING VALUE(ro_repo_srv) TYPE REF TO lcl_repo_srv. CLASS-METHODS db - RETURNING VALUE(ro_db) TYPE REF TO lcl_persistence_db. + RETURNING VALUE(ro_db) TYPE REF TO zcl_abapgit_persistence_db. CLASS-METHODS settings RETURNING VALUE(ro_settings) TYPE REF TO lcl_persist_settings. @@ -39,7 +38,7 @@ CLASS lcl_app DEFINITION FINAL. PRIVATE SECTION. CLASS-DATA: go_gui TYPE REF TO lcl_gui, go_current_user TYPE REF TO lcl_persistence_user, - go_db TYPE REF TO lcl_persistence_db, + go_db TYPE REF TO zcl_abapgit_persistence_db, go_repo_srv TYPE REF TO lcl_repo_srv, go_settings TYPE REF TO lcl_persist_settings, go_proxy TYPE REF TO lcl_proxy_configuration. diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap index 12dc16689..bc3b79133 100644 --- a/src/zabapgit_gui_router.prog.abap +++ b/src/zabapgit_gui_router.prog.abap @@ -66,7 +66,7 @@ CLASS lcl_gui_router IMPLEMENTATION. DATA: lv_url TYPE string, lv_key TYPE lcl_persistence_repo=>ty_repo-key, - ls_db TYPE lcl_persistence_db=>ty_content, + ls_db TYPE zcl_abapgit_persistence_db=>ty_content, ls_item TYPE zif_abapgit_definitions=>ty_item. lv_key = iv_getdata. " TODO refactor @@ -276,7 +276,7 @@ CLASS lcl_gui_router IMPLEMENTATION. DATA: lv_page_class TYPE string, lv_message TYPE string, - ls_key TYPE lcl_persistence_db=>ty_content. + ls_key TYPE zcl_abapgit_persistence_db=>ty_content. lv_page_class = |LCL_GUI_PAGE_{ to_upper( iv_name ) }|. ls_key = lcl_html_action_utils=>dbkey_decode( iv_getdata ). diff --git a/src/zabapgit_html_action_utils.prog.abap b/src/zabapgit_html_action_utils.prog.abap index f7805be4a..d5bbc2699 100644 --- a/src/zabapgit_html_action_utils.prog.abap +++ b/src/zabapgit_html_action_utils.prog.abap @@ -67,16 +67,16 @@ CLASS lcl_html_action_utils DEFINITION FINAL. RAISING zcx_abapgit_exception. CLASS-METHODS dbkey_encode - IMPORTING is_key TYPE lcl_persistence_db=>ty_content + IMPORTING is_key TYPE zcl_abapgit_persistence_db=>ty_content RETURNING VALUE(rv_string) TYPE string. CLASS-METHODS dbkey_decode IMPORTING iv_string TYPE clike - RETURNING VALUE(rs_key) TYPE lcl_persistence_db=>ty_content. + RETURNING VALUE(rs_key) TYPE zcl_abapgit_persistence_db=>ty_content. CLASS-METHODS dbcontent_decode IMPORTING it_postdata TYPE cnht_post_data_tab - RETURNING VALUE(rs_content) TYPE lcl_persistence_db=>ty_content. + RETURNING VALUE(rs_content) TYPE zcl_abapgit_persistence_db=>ty_content. CLASS-METHODS parse_commit_request IMPORTING it_postdata TYPE cnht_post_data_tab diff --git a/src/zabapgit_page_db.prog.abap b/src/zabapgit_page_db.prog.abap index c13d9c5f3..3c59b3735 100644 --- a/src/zabapgit_page_db.prog.abap +++ b/src/zabapgit_page_db.prog.abap @@ -6,17 +6,17 @@ CLASS lcl_gui_page_db_dis DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: constructor - IMPORTING is_key TYPE lcl_persistence_db=>ty_content. + IMPORTING is_key TYPE zcl_abapgit_persistence_db=>ty_content. CLASS-METHODS: render_record_banner - IMPORTING is_key TYPE lcl_persistence_db=>ty_content + IMPORTING is_key TYPE zcl_abapgit_persistence_db=>ty_content RETURNING VALUE(rv_html) TYPE string. PROTECTED SECTION. METHODS render_content REDEFINITION. PRIVATE SECTION. - DATA: ms_key TYPE lcl_persistence_db=>ty_content. + DATA: ms_key TYPE zcl_abapgit_persistence_db=>ty_content. ENDCLASS. @@ -41,8 +41,8 @@ CLASS lcl_gui_page_db_dis IMPLEMENTATION. DATA: lo_highlighter TYPE REF TO lcl_syntax_highlighter, lo_toolbar TYPE REF TO zcl_abapgit_html_toolbar, - lv_data TYPE lcl_persistence_db=>ty_content-data_str, - ls_action TYPE lcl_persistence_db=>ty_content, + lv_data TYPE zcl_abapgit_persistence_db=>ty_content-data_str, + ls_action TYPE zcl_abapgit_persistence_db=>ty_content, lv_action TYPE string. TRY. @@ -83,13 +83,13 @@ CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: constructor - IMPORTING is_key TYPE lcl_persistence_db=>ty_content. + IMPORTING is_key TYPE zcl_abapgit_persistence_db=>ty_content. PROTECTED SECTION. METHODS render_content REDEFINITION. PRIVATE SECTION. - DATA: ms_key TYPE lcl_persistence_db=>ty_content. + DATA: ms_key TYPE zcl_abapgit_persistence_db=>ty_content. ENDCLASS. @@ -103,7 +103,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. METHOD render_content. - DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, + DATA: lv_data TYPE zcl_abapgit_persistence_db=>ty_content-data_str, lo_toolbar TYPE REF TO zcl_abapgit_html_toolbar. TRY. @@ -160,7 +160,7 @@ CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page. PRIVATE SECTION. METHODS explain_content - IMPORTING is_data TYPE lcl_persistence_db=>ty_content + IMPORTING is_data TYPE zcl_abapgit_persistence_db=>ty_content RETURNING VALUE(rv_text) TYPE string RAISING zcx_abapgit_exception. @@ -175,7 +175,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION. METHOD render_content. - DATA: lt_data TYPE lcl_persistence_db=>tt_content, + DATA: lt_data TYPE zcl_abapgit_persistence_db=>tt_content, lv_action TYPE string, lv_trclass TYPE string, lo_toolbar TYPE REF TO zcl_abapgit_html_toolbar. diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 9195a99ab..4b8208448 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -19,7 +19,7 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page. changed_by TYPE string VALUE 'changed_by', END OF c_actions. - DATA: mv_show TYPE lcl_persistence_db=>ty_value, + DATA: mv_show TYPE zcl_abapgit_persistence_db=>ty_value, mo_repo_content TYPE REF TO lcl_gui_view_repo. METHODS: diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index cbaf28a57..652323d12 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -29,67 +29,6 @@ CLASS lcl_persist_migrate DEFINITION FINAL. ENDCLASS. -CLASS lcl_persistence_db DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. - - PUBLIC SECTION. - CONSTANTS: - c_tabname TYPE tabname VALUE 'ZABAPGIT', - c_lock TYPE viewname VALUE 'EZABAPGIT'. - - TYPES: ty_type TYPE c LENGTH 12. - TYPES: ty_value TYPE c LENGTH 12. - - TYPES: BEGIN OF ty_content, - type TYPE ty_type, - value TYPE ty_value, - data_str TYPE string, - END OF ty_content, - tt_content TYPE SORTED TABLE OF ty_content WITH UNIQUE KEY type value. - - METHODS: - list_by_type - IMPORTING iv_type TYPE ty_type - RETURNING VALUE(rt_content) TYPE tt_content, - list - RETURNING VALUE(rt_content) TYPE tt_content, - add - IMPORTING iv_type TYPE ty_type - iv_value TYPE ty_content-value - iv_data TYPE ty_content-data_str - RAISING zcx_abapgit_exception, - delete - IMPORTING iv_type TYPE ty_type - iv_value TYPE ty_content-value - RAISING zcx_abapgit_exception, - update - IMPORTING iv_type TYPE ty_type - iv_value TYPE ty_content-value - iv_data TYPE ty_content-data_str - RAISING zcx_abapgit_exception, - modify - IMPORTING iv_type TYPE ty_type - iv_value TYPE ty_content-value - iv_data TYPE ty_content-data_str - RAISING zcx_abapgit_exception, - read - IMPORTING iv_type TYPE ty_type - iv_value TYPE ty_content-value - RETURNING VALUE(rv_data) TYPE ty_content-data_str - RAISING zcx_abapgit_not_found, - lock - IMPORTING iv_mode TYPE enqmode DEFAULT 'E' - iv_type TYPE ty_type - iv_value TYPE ty_content-value - RAISING zcx_abapgit_exception. - - PRIVATE SECTION. - METHODS: validate_and_unprettify_xml - IMPORTING iv_xml TYPE string - RETURNING VALUE(rv_xml) TYPE string - RAISING zcx_abapgit_exception. - -ENDCLASS. - CLASS lcl_persistence_repo DEFINITION FINAL. PUBLIC SECTION. @@ -114,7 +53,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL. END OF ty_repo_xml. TYPES: BEGIN OF ty_repo, - key TYPE lcl_persistence_db=>ty_value. + key TYPE zcl_abapgit_persistence_db=>ty_value. INCLUDE TYPE ty_repo_xml. TYPES: END OF ty_repo. TYPES: tt_repo TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY. @@ -187,9 +126,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL. RAISING zcx_abapgit_exception. PRIVATE SECTION. - CONSTANTS c_type_repo TYPE lcl_persistence_db=>ty_type VALUE 'REPO'. - - DATA: mo_db TYPE REF TO lcl_persistence_db. + DATA: mo_db TYPE REF TO zcl_abapgit_persistence_db. METHODS from_xml IMPORTING iv_repo_xml_string TYPE string @@ -201,7 +138,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL. RETURNING VALUE(rv_repo_xml_string) TYPE string. METHODS get_next_id - RETURNING VALUE(rv_next_repo_id) TYPE lcl_persistence_db=>ty_content-value + RETURNING VALUE(rv_next_repo_id) TYPE zcl_abapgit_persistence_db=>ty_content-value RAISING zcx_abapgit_exception. ENDCLASS. @@ -231,7 +168,7 @@ CLASS lcl_persist_background DEFINITION FINAL. END OF ty_xml. TYPES: BEGIN OF ty_background, - key TYPE lcl_persistence_db=>ty_value. + key TYPE zcl_abapgit_persistence_db=>ty_value. INCLUDE TYPE ty_xml. TYPES: END OF ty_background. TYPES: tt_background TYPE STANDARD TABLE OF ty_background WITH DEFAULT KEY. @@ -256,9 +193,7 @@ CLASS lcl_persist_background DEFINITION FINAL. RAISING zcx_abapgit_exception. PRIVATE SECTION. - CONSTANTS c_type TYPE lcl_persistence_db=>ty_type VALUE 'BACKGROUND'. - - DATA: mo_db TYPE REF TO lcl_persistence_db, + DATA: mo_db TYPE REF TO zcl_abapgit_persistence_db, mt_jobs TYPE tt_background. METHODS from_xml @@ -278,7 +213,6 @@ CLASS lcl_settings DEFINITION FINAL. PUBLIC SECTION. CONSTANTS: c_commitmsg_comment_length_dft TYPE i VALUE 50. CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72. - CONSTANTS: c_dbtype_settings TYPE lcl_persistence_db=>ty_type VALUE 'SETTINGS' ##NO_TEXT. METHODS: set_proxy_url IMPORTING @@ -386,7 +320,7 @@ CLASS lcl_persist_background IMPLEMENTATION. METHOD list. - DATA: lt_list TYPE lcl_persistence_db=>tt_content, + DATA: lt_list TYPE zcl_abapgit_persistence_db=>tt_content, ls_xml TYPE ty_xml. FIELD-SYMBOLS: LIKE LINE OF lt_list, @@ -398,7 +332,7 @@ CLASS lcl_persist_background IMPLEMENTATION. ENDIF. - lt_list = mo_db->list_by_type( c_type ). + lt_list = mo_db->list_by_type( zcl_abapgit_persistence_db=>c_type_background ). LOOP AT lt_list ASSIGNING . ls_xml = from_xml( -data_str ). @@ -425,7 +359,7 @@ CLASS lcl_persist_background IMPLEMENTATION. ASSERT NOT is_data-key IS INITIAL. mo_db->modify( - iv_type = c_type + iv_type = zcl_abapgit_persistence_db=>c_type_background iv_value = is_data-key iv_data = to_xml( is_data ) ). @@ -437,13 +371,13 @@ CLASS lcl_persist_background IMPLEMENTATION. METHOD delete. TRY. - mo_db->read( iv_type = c_type + mo_db->read( iv_type = zcl_abapgit_persistence_db=>c_type_background iv_value = iv_key ). CATCH zcx_abapgit_not_found. RETURN. ENDTRY. - mo_db->delete( iv_type = c_type + mo_db->delete( iv_type = zcl_abapgit_persistence_db=>c_type_background iv_value = iv_key ). DELETE mt_jobs WHERE key = iv_key. @@ -580,8 +514,6 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING zcx_abapgit_exception. PRIVATE SECTION. - CONSTANTS c_type_user TYPE lcl_persistence_db=>ty_type VALUE 'USER'. - DATA: mv_user TYPE xubname. TYPES: @@ -671,7 +603,7 @@ CLASS lcl_persistence_user IMPLEMENTATION. TRY. lv_xml = lcl_app=>db( )->read( - iv_type = c_type_user + iv_type = zcl_abapgit_persistence_db=>c_type_user iv_value = mv_user ). CATCH zcx_abapgit_not_found. RETURN. @@ -707,7 +639,7 @@ CLASS lcl_persistence_user IMPLEMENTATION. lv_xml = to_xml( is_user ). lcl_app=>db( )->modify( - iv_type = c_type_user + iv_type = zcl_abapgit_persistence_db=>c_type_user iv_value = mv_user iv_data = lv_xml ). @@ -938,131 +870,6 @@ CLASS lcl_persistence_user IMPLEMENTATION. ENDCLASS. - -*----------------------------------------------------------------------* -* CLASS lcl_persistence_db -*----------------------------------------------------------------------* - -CLASS lcl_persistence_db IMPLEMENTATION. - - METHOD list_by_type. - SELECT * FROM (c_tabname) - INTO TABLE rt_content - WHERE type = iv_type. "#EC CI_SUBRC - ENDMETHOD. - - METHOD list. - SELECT * FROM (c_tabname) - INTO TABLE rt_content. "#EC CI_SUBRC - ENDMETHOD. - - METHOD lock. - - CALL FUNCTION 'ENQUEUE_EZABAPGIT' - EXPORTING - mode_zabapgit = iv_mode - type = iv_type - value = iv_value - EXCEPTIONS - foreign_lock = 1 - system_failure = 2 - OTHERS = 3. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( |Could not aquire lock { iv_type } { iv_value }| ). - ENDIF. - -* trigger dummy update task to automatically release locks at commit - CALL FUNCTION 'BANK_OBJ_WORKL_RELEASE_LOCKS' - IN UPDATE TASK. - - ENDMETHOD. - - METHOD add. - - DATA ls_table TYPE ty_content. - - ls_table-type = iv_type. - ls_table-value = iv_value. - ls_table-data_str = iv_data. - - INSERT (c_tabname) FROM ls_table. "#EC CI_SUBRC - ASSERT sy-subrc = 0. - - ENDMETHOD. - - METHOD delete. - - lock( iv_type = iv_type - iv_value = iv_value ). - - DELETE FROM (c_tabname) - WHERE type = iv_type - AND value = iv_value. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'DB Delete failed' ). - ENDIF. - - ENDMETHOD. - - METHOD validate_and_unprettify_xml. - - rv_xml = zcl_abapgit_xml_pretty=>print( - iv_xml = iv_xml - iv_unpretty = abap_true - iv_ignore_errors = abap_false ). - - ENDMETHOD. " validate_and_unprettify_xml - - METHOD update. - - DATA lv_data LIKE iv_data. - - lv_data = validate_and_unprettify_xml( iv_data ). - - lock( iv_type = iv_type - iv_value = iv_value ). - - UPDATE (c_tabname) SET data_str = lv_data - WHERE type = iv_type - AND value = iv_value. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'DB update failed' ). - ENDIF. - - ENDMETHOD. "update - - METHOD modify. - - DATA: ls_content TYPE ty_content. - - lock( iv_type = iv_type - iv_value = iv_value ). - - ls_content-type = iv_type. - ls_content-value = iv_value. - ls_content-data_str = iv_data. - - MODIFY (c_tabname) FROM ls_content. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'DB modify failed' ). - ENDIF. - - ENDMETHOD. - - METHOD read. - - SELECT SINGLE data_str FROM (c_tabname) INTO rv_data - WHERE type = iv_type - AND value = iv_value. "#EC CI_SUBRC - IF sy-subrc <> 0. - RAISE EXCEPTION TYPE zcx_abapgit_not_found. - ENDIF. - - ENDMETHOD. - -ENDCLASS. - - *----------------------------------------------------------------------* * CLASS lcl_persistence_repo *----------------------------------------------------------------------* @@ -1086,7 +893,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. rv_key = get_next_id( ). - mo_db->add( iv_type = c_type_repo + mo_db->add( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = rv_key iv_data = lv_repo_as_xml ). @@ -1094,7 +901,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD update_dot_abapgit. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1110,7 +917,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-dot_abapgit = is_dot_abapgit. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1123,14 +930,14 @@ CLASS lcl_persistence_repo IMPLEMENTATION. CREATE OBJECT lo_background. lo_background->delete( iv_key ). - mo_db->delete( iv_type = c_type_repo + mo_db->delete( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key ). ENDMETHOD. METHOD update_local_checksums. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1146,7 +953,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-local_checksums = it_checksums. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1154,7 +961,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD update_url. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1174,7 +981,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-url = iv_url. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1182,7 +989,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD update_branch_name. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1198,7 +1005,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-branch_name = iv_branch_name. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1206,7 +1013,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD update_head_branch. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1222,7 +1029,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-head_branch = iv_head_branch. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1230,7 +1037,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD update_offline. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1245,7 +1052,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-offline = iv_offline. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1253,7 +1060,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD update_sha1. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo TYPE ty_repo. @@ -1269,7 +1076,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. ls_repo-sha1 = iv_branch_sha1. ls_content-data_str = to_xml( ls_repo ). - mo_db->update( iv_type = c_type_repo + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). @@ -1293,14 +1100,14 @@ CLASS lcl_persistence_repo IMPLEMENTATION. * todo: Lock the complete persistence in order to prevent concurrent repo-creation * however the current approach will most likely work in almost all cases - DATA: lt_content TYPE lcl_persistence_db=>tt_content. + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content. FIELD-SYMBOLS: LIKE LINE OF lt_content. rv_next_repo_id = 1. - lt_content = mo_db->list_by_type( c_type_repo ). + lt_content = mo_db->list_by_type( zcl_abapgit_persistence_db=>c_type_repo ). LOOP AT lt_content ASSIGNING . IF -value >= rv_next_repo_id. rv_next_repo_id = -value + 1. @@ -1317,12 +1124,12 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD list. - DATA: lt_content TYPE lcl_persistence_db=>tt_content, + DATA: lt_content TYPE zcl_abapgit_persistence_db=>tt_content, ls_content LIKE LINE OF lt_content, ls_repo LIKE LINE OF rt_repos. - lt_content = mo_db->list_by_type( c_type_repo ). + lt_content = mo_db->list_by_type( zcl_abapgit_persistence_db=>c_type_repo ). LOOP AT lt_content INTO ls_content. MOVE-CORRESPONDING from_xml( ls_content-data_str ) TO ls_repo. @@ -1372,7 +1179,7 @@ CLASS lcl_persistence_repo IMPLEMENTATION. METHOD lock. mo_db->lock( iv_mode = iv_mode - iv_type = c_type_repo + iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key ). ENDMETHOD. @@ -1563,7 +1370,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. SELECT SINGLE viewname FROM dd25l INTO lv_viewname - WHERE viewname = lcl_persistence_db=>c_lock. + WHERE viewname = zcl_abapgit_persistence_db=>c_lock. rv_exists = boolc( sy-subrc = 0 ). ENDMETHOD. @@ -1579,38 +1386,38 @@ CLASS lcl_persist_migrate IMPLEMENTATION. LIKE LINE OF lt_dd27p. - ls_dd25v-viewname = lcl_persistence_db=>c_lock. + ls_dd25v-viewname = zcl_abapgit_persistence_db=>c_lock. ls_dd25v-aggtype = 'E'. - ls_dd25v-roottab = lcl_persistence_db=>c_tabname. + ls_dd25v-roottab = zcl_abapgit_persistence_db=>c_tabname. ls_dd25v-ddlanguage = zif_abapgit_definitions=>gc_english. ls_dd25v-ddtext = c_text. APPEND INITIAL LINE TO lt_dd26e ASSIGNING . - -viewname = lcl_persistence_db=>c_lock. - -tabname = lcl_persistence_db=>c_tabname. + -viewname = zcl_abapgit_persistence_db=>c_lock. + -tabname = zcl_abapgit_persistence_db=>c_tabname. -tabpos = '0001'. - -fortabname = lcl_persistence_db=>c_tabname. + -fortabname = zcl_abapgit_persistence_db=>c_tabname. -enqmode = 'E'. APPEND INITIAL LINE TO lt_dd27p ASSIGNING . - -viewname = lcl_persistence_db=>c_lock. + -viewname = zcl_abapgit_persistence_db=>c_lock. -objpos = '0001'. -viewfield = 'TYPE'. - -tabname = lcl_persistence_db=>c_tabname. + -tabname = zcl_abapgit_persistence_db=>c_tabname. -fieldname = 'TYPE'. -keyflag = abap_true. APPEND INITIAL LINE TO lt_dd27p ASSIGNING . - -viewname = lcl_persistence_db=>c_lock. + -viewname = zcl_abapgit_persistence_db=>c_lock. -objpos = '0002'. -viewfield = 'VALUE'. - -tabname = lcl_persistence_db=>c_tabname. + -tabname = zcl_abapgit_persistence_db=>c_tabname. -fieldname = 'VALUE'. -keyflag = abap_true. CALL FUNCTION 'DDIF_ENQU_PUT' EXPORTING - name = lcl_persistence_db=>c_lock + name = zcl_abapgit_persistence_db=>c_lock dd25v_wa = ls_dd25v TABLES dd26e_tab = lt_dd26e @@ -1626,7 +1433,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. zcx_abapgit_exception=>raise( 'migrate, error from DDIF_ENQU_PUT' ). ENDIF. - lv_obj_name = lcl_persistence_db=>c_lock. + lv_obj_name = zcl_abapgit_persistence_db=>c_lock. CALL FUNCTION 'TR_TADIR_INTERFACE' EXPORTING wi_tadir_pgmid = 'R3TR' @@ -1643,7 +1450,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. CALL FUNCTION 'DDIF_ENQU_ACTIVATE' EXPORTING - name = lcl_persistence_db=>c_lock + name = zcl_abapgit_persistence_db=>c_lock EXCEPTIONS not_found = 1 put_failure = 2 @@ -1659,7 +1466,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. DATA: lv_tabname TYPE dd02l-tabname. SELECT SINGLE tabname FROM dd02l INTO lv_tabname - WHERE tabname = lcl_persistence_db=>c_tabname. + WHERE tabname = zcl_abapgit_persistence_db=>c_tabname. rv_exists = boolc( sy-subrc = 0 ). ENDMETHOD. @@ -1674,21 +1481,21 @@ CLASS lcl_persist_migrate IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_dd03p. - ls_dd02v-tabname = lcl_persistence_db=>c_tabname. + ls_dd02v-tabname = zcl_abapgit_persistence_db=>c_tabname. ls_dd02v-ddlanguage = zif_abapgit_definitions=>gc_english. ls_dd02v-tabclass = 'TRANSP'. ls_dd02v-ddtext = c_text. ls_dd02v-contflag = 'A'. ls_dd02v-exclass = '1'. - ls_dd09l-tabname = lcl_persistence_db=>c_tabname. + ls_dd09l-tabname = zcl_abapgit_persistence_db=>c_tabname. ls_dd09l-as4local = 'A'. ls_dd09l-tabkat = '1'. ls_dd09l-tabart = 'APPL1'. ls_dd09l-bufallow = 'N'. APPEND INITIAL LINE TO lt_dd03p ASSIGNING . - -tabname = lcl_persistence_db=>c_tabname. + -tabname = zcl_abapgit_persistence_db=>c_tabname. -fieldname = 'TYPE'. -position = '0001'. -keyflag = 'X'. @@ -1696,7 +1503,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. -leng = '000012'. APPEND INITIAL LINE TO lt_dd03p ASSIGNING . - -tabname = lcl_persistence_db=>c_tabname. + -tabname = zcl_abapgit_persistence_db=>c_tabname. -fieldname = 'VALUE'. -position = '0002'. -keyflag = 'X'. @@ -1704,14 +1511,14 @@ CLASS lcl_persist_migrate IMPLEMENTATION. -leng = '000012'. APPEND INITIAL LINE TO lt_dd03p ASSIGNING . - -tabname = lcl_persistence_db=>c_tabname. + -tabname = zcl_abapgit_persistence_db=>c_tabname. -fieldname = 'DATA_STR'. -position = '0003'. -datatype = 'STRG'. CALL FUNCTION 'DDIF_TABL_PUT' EXPORTING - name = lcl_persistence_db=>c_tabname + name = zcl_abapgit_persistence_db=>c_tabname dd02v_wa = ls_dd02v dd09l_wa = ls_dd09l TABLES @@ -1727,7 +1534,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. zcx_abapgit_exception=>raise( 'migrate, error from DDIF_TABL_PUT' ). ENDIF. - lv_obj_name = lcl_persistence_db=>c_tabname. + lv_obj_name = zcl_abapgit_persistence_db=>c_tabname. CALL FUNCTION 'TR_TADIR_INTERFACE' EXPORTING wi_tadir_pgmid = 'R3TR' @@ -1744,7 +1551,7 @@ CLASS lcl_persist_migrate IMPLEMENTATION. CALL FUNCTION 'DDIF_TABL_ACTIVATE' EXPORTING - name = lcl_persistence_db=>c_tabname + name = zcl_abapgit_persistence_db=>c_tabname auth_chk = abap_false IMPORTING rc = lv_rc @@ -1840,7 +1647,7 @@ CLASS lcl_settings IMPLEMENTATION. CREATE OBJECT lr_output. - lr_output->add( iv_name = lcl_settings=>c_dbtype_settings + lr_output->add( iv_name = zcl_abapgit_persistence_db=>c_type_settings ig_data = ms_settings ). ev_settings_xml = lr_output->render( ). @@ -1855,7 +1662,7 @@ CLASS lcl_settings IMPLEMENTATION. CLEAR ms_settings. - lr_input->read( EXPORTING iv_name = lcl_settings=>c_dbtype_settings + lr_input->read( EXPORTING iv_name = zcl_abapgit_persistence_db=>c_type_settings CHANGING cg_data = ms_settings ). ENDMETHOD. @@ -1884,7 +1691,7 @@ CLASS lcl_persist_settings IMPLEMENTATION. settings = io_settings->get_settings_xml( ). lcl_app=>db( )->modify( - iv_type = lcl_settings=>c_dbtype_settings + iv_type = zcl_abapgit_persistence_db=>c_type_settings iv_value = '' iv_data = settings ). @@ -1909,7 +1716,7 @@ CLASS lcl_persist_settings IMPLEMENTATION. TRY. ro_settings->set_xml_settings( - lcl_app=>db( )->read( iv_type = lcl_settings=>c_dbtype_settings + lcl_app=>db( )->read( iv_type = zcl_abapgit_persistence_db=>c_type_settings iv_value = '' ) ). CATCH zcx_abapgit_not_found zcx_abapgit_exception. diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 8ba361de5..08b2635b0 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -12,7 +12,7 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv. constructor IMPORTING is_data TYPE lcl_persistence_repo=>ty_repo, get_key - RETURNING VALUE(rv_key) TYPE lcl_persistence_db=>ty_value, + RETURNING VALUE(rv_key) TYPE zcl_abapgit_persistence_db=>ty_value, get_name RETURNING VALUE(rv_name) TYPE string RAISING zcx_abapgit_exception, @@ -206,7 +206,7 @@ CLASS lcl_repo_srv DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING zcx_abapgit_exception. METHODS get - IMPORTING iv_key TYPE lcl_persistence_db=>ty_value + IMPORTING iv_key TYPE zcl_abapgit_persistence_db=>ty_value RETURNING VALUE(ro_repo) TYPE REF TO lcl_repo RAISING zcx_abapgit_exception. @@ -217,7 +217,7 @@ CLASS lcl_repo_srv DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING zcx_abapgit_exception. METHODS switch_repo_type - IMPORTING iv_key TYPE lcl_persistence_db=>ty_value + IMPORTING iv_key TYPE zcl_abapgit_persistence_db=>ty_value iv_offline TYPE abap_bool RAISING zcx_abapgit_exception. diff --git a/src/zabapgit_services_db.prog.abap b/src/zabapgit_services_db.prog.abap index 83df7ac14..fd4e8dd9c 100644 --- a/src/zabapgit_services_db.prog.abap +++ b/src/zabapgit_services_db.prog.abap @@ -6,11 +6,11 @@ CLASS lcl_services_db DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS delete - IMPORTING is_key TYPE lcl_persistence_db=>ty_content + IMPORTING is_key TYPE zcl_abapgit_persistence_db=>ty_content RAISING zcx_abapgit_exception zcx_abapgit_cancel. CLASS-METHODS update - IMPORTING is_content TYPE lcl_persistence_db=>ty_content + IMPORTING is_content TYPE zcl_abapgit_persistence_db=>ty_content RAISING zcx_abapgit_exception. ENDCLASS. "lcl_services_db diff --git a/src/zabapgit_services_repo.prog.abap b/src/zabapgit_services_repo.prog.abap index 55e82401d..f35b55479 100644 --- a/src/zabapgit_services_repo.prog.abap +++ b/src/zabapgit_services_repo.prog.abap @@ -48,7 +48,7 @@ CLASS lcl_services_repo DEFINITION FINAL. RAISING zcx_abapgit_exception. CLASS-METHODS transport_to_branch - IMPORTING iv_repository_key TYPE lcl_persistence_db=>ty_value + IMPORTING iv_repository_key TYPE zcl_abapgit_persistence_db=>ty_value RAISING zcx_abapgit_exception zcx_abapgit_cancel. ENDCLASS. "lcl_services_repo diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index bc45e54cf..fb59aca1a 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -267,7 +267,7 @@ CLASS lcl_gui_view_repo IMPLEMENTATION. DATA: lo_tb_advanced TYPE REF TO zcl_abapgit_html_toolbar, lo_tb_branch TYPE REF TO zcl_abapgit_html_toolbar, lo_tb_tag TYPE REF TO zcl_abapgit_html_toolbar, - lv_key TYPE lcl_persistence_db=>ty_value, + lv_key TYPE zcl_abapgit_persistence_db=>ty_value, lv_wp_opt LIKE zif_abapgit_definitions=>gc_html_opt-crossout, lv_crossout LIKE zif_abapgit_definitions=>gc_html_opt-crossout, lv_pull_opt LIKE zif_abapgit_definitions=>gc_html_opt-crossout. diff --git a/src/zabapgit_zip.prog.abap b/src/zabapgit_zip.prog.abap index 933a010a3..26f5373c5 100644 --- a/src/zabapgit_zip.prog.abap +++ b/src/zabapgit_zip.prog.abap @@ -11,7 +11,7 @@ CLASS lcl_zip DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS import - IMPORTING iv_key TYPE lcl_persistence_db=>ty_value + IMPORTING iv_key TYPE zcl_abapgit_persistence_db=>ty_value RAISING zcx_abapgit_exception. CLASS-METHODS export