diff --git a/src/persist/zcl_abapgit_persist_factory.clas.abap b/src/persist/zcl_abapgit_persist_factory.clas.abap new file mode 100644 index 000000000..1b6bc0451 --- /dev/null +++ b/src/persist/zcl_abapgit_persist_factory.clas.abap @@ -0,0 +1,32 @@ +CLASS zcl_abapgit_persist_factory DEFINITION + PUBLIC + CREATE PRIVATE + + GLOBAL FRIENDS zcl_abapgit_persist_injector . + + PUBLIC SECTION. + + CLASS-METHODS get_repo + RETURNING + VALUE(ri_repo) TYPE REF TO zif_abapgit_persist_repo . + PROTECTED SECTION. + PRIVATE SECTION. + + CLASS-DATA gi_repo TYPE REF TO zif_abapgit_persist_repo . +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_PERSIST_FACTORY IMPLEMENTATION. + + + METHOD get_repo. + + IF gi_repo IS INITIAL. + CREATE OBJECT gi_repo TYPE zcl_abapgit_persistence_repo. + ENDIF. + + ri_repo = gi_repo. + + ENDMETHOD. +ENDCLASS. diff --git a/src/persist/zcl_abapgit_persist_factory.clas.xml b/src/persist/zcl_abapgit_persist_factory.clas.xml new file mode 100644 index 000000000..38cc8d096 --- /dev/null +++ b/src/persist/zcl_abapgit_persist_factory.clas.xml @@ -0,0 +1,17 @@ + + + + + + ZCL_ABAPGIT_PERSIST_FACTORY + 1 + E + Persistence Factory + 1 + X + X + X + + + + diff --git a/src/persist/zcl_abapgit_persist_injector.clas.abap b/src/persist/zcl_abapgit_persist_injector.clas.abap new file mode 100644 index 000000000..956b73cc3 --- /dev/null +++ b/src/persist/zcl_abapgit_persist_injector.clas.abap @@ -0,0 +1,25 @@ +CLASS zcl_abapgit_persist_injector DEFINITION + PUBLIC + CREATE PRIVATE + FOR TESTING . + + PUBLIC SECTION. + + CLASS-METHODS set_repo + IMPORTING + !ii_repo TYPE REF TO zif_abapgit_persist_repo . + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_PERSIST_INJECTOR IMPLEMENTATION. + + + METHOD set_repo. + + zcl_abapgit_persist_factory=>gi_repo = ii_repo. + + ENDMETHOD. +ENDCLASS. diff --git a/src/persist/zcl_abapgit_persist_injector.clas.xml b/src/persist/zcl_abapgit_persist_injector.clas.xml new file mode 100644 index 000000000..bd752600a --- /dev/null +++ b/src/persist/zcl_abapgit_persist_injector.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_PERSIST_INJECTOR + 1 + E + Persistence Injector + 05 + 1 + X + X + X + + + + diff --git a/src/persist/zcl_abapgit_persistence_repo.clas.abap b/src/persist/zcl_abapgit_persistence_repo.clas.abap index 1fc729152..05b3d6429 100644 --- a/src/persist/zcl_abapgit_persistence_repo.clas.abap +++ b/src/persist/zcl_abapgit_persistence_repo.clas.abap @@ -1,96 +1,20 @@ CLASS zcl_abapgit_persistence_repo DEFINITION PUBLIC - CREATE PUBLIC . + CREATE PROTECTED + + GLOBAL FRIENDS zcl_abapgit_persist_factory . PUBLIC SECTION. - METHODS constructor . - METHODS list - RETURNING - VALUE(rt_repos) TYPE zif_abapgit_persistence=>tt_repo - RAISING - zcx_abapgit_exception . - METHODS update_local_checksums - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !it_checksums TYPE zif_abapgit_persistence=>ty_repo_xml-local_checksums - RAISING - zcx_abapgit_exception . - METHODS update_url - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !iv_url TYPE zif_abapgit_persistence=>ty_repo_xml-url - RAISING - zcx_abapgit_exception . - METHODS update_branch_name - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !iv_branch_name TYPE zif_abapgit_persistence=>ty_repo_xml-branch_name - RAISING - zcx_abapgit_exception . - METHODS update_head_branch - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !iv_head_branch TYPE zif_abapgit_persistence=>ty_repo_xml-head_branch - RAISING - zcx_abapgit_exception . - METHODS update_offline - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !iv_offline TYPE zif_abapgit_persistence=>ty_repo_xml-offline - RAISING - zcx_abapgit_exception . - METHODS update_dot_abapgit - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit - RAISING - zcx_abapgit_exception . - METHODS add - IMPORTING - !iv_url TYPE string - !iv_branch_name TYPE string - !iv_branch TYPE zif_abapgit_definitions=>ty_sha1 OPTIONAL - !iv_package TYPE devclass - !iv_offline TYPE sap_bool DEFAULT abap_false - !is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit - RETURNING - VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_repo-key - RAISING - zcx_abapgit_exception . - METHODS delete - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - RAISING - zcx_abapgit_exception . - METHODS read - IMPORTING - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - RETURNING - VALUE(rs_repo) TYPE zif_abapgit_persistence=>ty_repo - RAISING - zcx_abapgit_exception - zcx_abapgit_not_found . - METHODS lock - IMPORTING - !iv_mode TYPE enqmode - !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - RAISING - zcx_abapgit_exception . - METHODS update_local_settings - IMPORTING - iv_key TYPE zif_abapgit_persistence=>ty_repo-key - is_settings TYPE zif_abapgit_persistence=>ty_repo_xml-local_settings - RAISING - zcx_abapgit_exception . - METHODS update_deserialized - IMPORTING - iv_key TYPE zif_abapgit_persistence=>ty_value - iv_deserialized_at TYPE timestampl - iv_deserialized_by TYPE xubname - RAISING - zcx_abapgit_exception. + INTERFACES zif_abapgit_persist_repo . + METHODS constructor . + PROTECTED SECTION. + + ALIASES list + FOR zif_abapgit_persist_repo~list . + ALIASES read + FOR zif_abapgit_persist_repo~read . PRIVATE SECTION. DATA mo_db TYPE REF TO zcl_abapgit_persistence_db . @@ -116,32 +40,7 @@ ENDCLASS. -CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. - - - METHOD add. - - DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo, - lv_repo_as_xml TYPE string. - - - ls_repo-url = iv_url. - ls_repo-branch_name = iv_branch_name. - ls_repo-package = iv_package. - ls_repo-offline = iv_offline. - ls_repo-created_by = sy-uname. - GET TIME STAMP FIELD ls_repo-created_at. - ls_repo-dot_abapgit = is_dot_abapgit. - - lv_repo_as_xml = to_xml( ls_repo ). - - rv_key = get_next_id( ). - - mo_db->add( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = rv_key - iv_data = lv_repo_as_xml ). - - ENDMETHOD. +CLASS ZCL_ABAPGIT_PERSISTENCE_REPO IMPLEMENTATION. METHOD constructor. @@ -149,19 +48,6 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. ENDMETHOD. - METHOD delete. - - DATA: lo_background TYPE REF TO zcl_abapgit_persist_background. - - CREATE OBJECT lo_background. - lo_background->delete( iv_key ). - - mo_db->delete( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key ). - - ENDMETHOD. - - METHOD from_xml. DATA: lv_xml TYPE string. @@ -222,7 +108,58 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. ENDMETHOD. - METHOD list. + METHOD to_xml. + + DATA: ls_xml TYPE zif_abapgit_persistence=>ty_repo_xml. + + + MOVE-CORRESPONDING is_repo TO ls_xml. + + CALL TRANSFORMATION id + SOURCE repo = ls_xml + RESULT XML rv_repo_xml_string. + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~add. + + DATA: ls_repo TYPE zif_abapgit_persistence=>ty_repo, + lv_repo_as_xml TYPE string. + + + ls_repo-url = iv_url. + ls_repo-branch_name = iv_branch_name. + ls_repo-package = iv_package. + ls_repo-offline = iv_offline. + ls_repo-created_by = sy-uname. + GET TIME STAMP FIELD ls_repo-created_at. + ls_repo-dot_abapgit = is_dot_abapgit. + + lv_repo_as_xml = to_xml( ls_repo ). + + rv_key = get_next_id( ). + + mo_db->add( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = rv_key + iv_data = lv_repo_as_xml ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~delete. + + DATA: lo_background TYPE REF TO zcl_abapgit_persist_background. + + CREATE OBJECT lo_background. + lo_background->delete( iv_key ). + + mo_db->delete( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~list. DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, ls_content LIKE LINE OF lt_content, @@ -240,7 +177,7 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. ENDMETHOD. - METHOD lock. + METHOD zif_abapgit_persist_repo~lock. mo_db->lock( iv_mode = iv_mode iv_type = zcl_abapgit_persistence_db=>c_type_repo @@ -249,7 +186,7 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. ENDMETHOD. - METHOD read. + METHOD zif_abapgit_persist_repo~read. DATA lt_repo TYPE zif_abapgit_persistence=>tt_repo. @@ -263,20 +200,7 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. ENDMETHOD. - METHOD to_xml. - - DATA: ls_xml TYPE zif_abapgit_persistence=>ty_repo_xml. - - - MOVE-CORRESPONDING is_repo TO ls_xml. - - CALL TRANSFORMATION id - SOURCE repo = ls_xml - RESULT XML rv_repo_xml_string. - ENDMETHOD. - - - METHOD update_branch_name. + METHOD zif_abapgit_persist_repo~update_branch_name. DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, ls_content LIKE LINE OF lt_content, @@ -301,159 +225,7 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. ENDMETHOD. - METHOD update_dot_abapgit. - - DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, - ls_content LIKE LINE OF lt_content, - ls_repo TYPE zif_abapgit_persistence=>ty_repo. - - - ASSERT NOT iv_key IS INITIAL. - - TRY. - ls_repo = read( iv_key ). - CATCH zcx_abapgit_not_found. - zcx_abapgit_exception=>raise( 'key not found' ). - ENDTRY. - - ls_repo-dot_abapgit = is_dot_abapgit. - ls_content-data_str = to_xml( ls_repo ). - - mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key - iv_data = ls_content-data_str ). - - ENDMETHOD. - - - METHOD update_head_branch. - - DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, - ls_content LIKE LINE OF lt_content, - ls_repo TYPE zif_abapgit_persistence=>ty_repo. - - - ASSERT NOT iv_key IS INITIAL. - - TRY. - ls_repo = read( iv_key ). - CATCH zcx_abapgit_not_found. - zcx_abapgit_exception=>raise( 'key not found' ). - ENDTRY. - - ls_repo-head_branch = iv_head_branch. - ls_content-data_str = to_xml( ls_repo ). - - mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key - iv_data = ls_content-data_str ). - - ENDMETHOD. "update_head_branch - - - METHOD update_local_checksums. - - DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, - ls_content LIKE LINE OF lt_content, - ls_repo TYPE zif_abapgit_persistence=>ty_repo. - - - ASSERT NOT iv_key IS INITIAL. - - TRY. - ls_repo = read( iv_key ). - CATCH zcx_abapgit_not_found. - zcx_abapgit_exception=>raise( 'key not found' ). - ENDTRY. - - ls_repo-local_checksums = it_checksums. - ls_content-data_str = to_xml( ls_repo ). - - mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key - iv_data = ls_content-data_str ). - - ENDMETHOD. - - - METHOD update_local_settings. - - DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, - ls_content LIKE LINE OF lt_content, - ls_repo TYPE zif_abapgit_persistence=>ty_repo. - - - ASSERT NOT iv_key IS INITIAL. - - TRY. - ls_repo = read( iv_key ). - CATCH zcx_abapgit_not_found. - zcx_abapgit_exception=>raise( 'key not found' ). - ENDTRY. - - ls_repo-local_settings = is_settings. - ls_content-data_str = to_xml( ls_repo ). - - mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key - iv_data = ls_content-data_str ). - - ENDMETHOD. - - - METHOD update_offline. - - DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, - ls_content LIKE LINE OF lt_content, - ls_repo TYPE zif_abapgit_persistence=>ty_repo. - - ASSERT NOT iv_key IS INITIAL. - - TRY. - ls_repo = read( iv_key ). - CATCH zcx_abapgit_not_found. - zcx_abapgit_exception=>raise( 'key not found' ). - ENDTRY. - - ls_repo-offline = iv_offline. - ls_content-data_str = to_xml( ls_repo ). - - mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key - iv_data = ls_content-data_str ). - - ENDMETHOD. "update_offline - - - METHOD update_url. - - DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, - ls_content LIKE LINE OF lt_content, - ls_repo TYPE zif_abapgit_persistence=>ty_repo. - - - IF iv_url IS INITIAL. - zcx_abapgit_exception=>raise( 'update, url empty' ). - ENDIF. - - ASSERT NOT iv_key IS INITIAL. - - TRY. - ls_repo = read( iv_key ). - CATCH zcx_abapgit_not_found. - zcx_abapgit_exception=>raise( 'key not found' ). - ENDTRY. - - ls_repo-url = iv_url. - ls_content-data_str = to_xml( ls_repo ). - - mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo - iv_value = iv_key - iv_data = ls_content-data_str ). - - ENDMETHOD. - - METHOD update_deserialized. + METHOD zif_abapgit_persist_repo~update_deserialized. DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, ls_content LIKE LINE OF lt_content, @@ -480,6 +252,159 @@ CLASS zcl_abapgit_persistence_repo IMPLEMENTATION. mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo iv_value = iv_key iv_data = ls_content-data_str ). + ENDMETHOD. + + METHOD zif_abapgit_persist_repo~update_dot_abapgit. + + DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, + ls_content LIKE LINE OF lt_content, + ls_repo TYPE zif_abapgit_persistence=>ty_repo. + + + ASSERT NOT iv_key IS INITIAL. + + TRY. + ls_repo = read( iv_key ). + CATCH zcx_abapgit_not_found. + zcx_abapgit_exception=>raise( 'key not found' ). + ENDTRY. + + ls_repo-dot_abapgit = is_dot_abapgit. + ls_content-data_str = to_xml( ls_repo ). + + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key + iv_data = ls_content-data_str ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~update_head_branch. + + DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, + ls_content LIKE LINE OF lt_content, + ls_repo TYPE zif_abapgit_persistence=>ty_repo. + + + ASSERT NOT iv_key IS INITIAL. + + TRY. + ls_repo = read( iv_key ). + CATCH zcx_abapgit_not_found. + zcx_abapgit_exception=>raise( 'key not found' ). + ENDTRY. + + ls_repo-head_branch = iv_head_branch. + ls_content-data_str = to_xml( ls_repo ). + + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key + iv_data = ls_content-data_str ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~update_local_checksums. + + DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, + ls_content LIKE LINE OF lt_content, + ls_repo TYPE zif_abapgit_persistence=>ty_repo. + + + ASSERT NOT iv_key IS INITIAL. + + TRY. + ls_repo = read( iv_key ). + CATCH zcx_abapgit_not_found. + zcx_abapgit_exception=>raise( 'key not found' ). + ENDTRY. + + ls_repo-local_checksums = it_checksums. + ls_content-data_str = to_xml( ls_repo ). + + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key + iv_data = ls_content-data_str ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~update_local_settings. + + DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, + ls_content LIKE LINE OF lt_content, + ls_repo TYPE zif_abapgit_persistence=>ty_repo. + + + ASSERT NOT iv_key IS INITIAL. + + TRY. + ls_repo = read( iv_key ). + CATCH zcx_abapgit_not_found. + zcx_abapgit_exception=>raise( 'key not found' ). + ENDTRY. + + ls_repo-local_settings = is_settings. + ls_content-data_str = to_xml( ls_repo ). + + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key + iv_data = ls_content-data_str ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~update_offline. + + DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, + ls_content LIKE LINE OF lt_content, + ls_repo TYPE zif_abapgit_persistence=>ty_repo. + + ASSERT NOT iv_key IS INITIAL. + + TRY. + ls_repo = read( iv_key ). + CATCH zcx_abapgit_not_found. + zcx_abapgit_exception=>raise( 'key not found' ). + ENDTRY. + + ls_repo-offline = iv_offline. + ls_content-data_str = to_xml( ls_repo ). + + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key + iv_data = ls_content-data_str ). + + ENDMETHOD. + + + METHOD zif_abapgit_persist_repo~update_url. + + DATA: lt_content TYPE zif_abapgit_persistence=>tt_content, + ls_content LIKE LINE OF lt_content, + ls_repo TYPE zif_abapgit_persistence=>ty_repo. + + + IF iv_url IS INITIAL. + zcx_abapgit_exception=>raise( 'update, url empty' ). + ENDIF. + + ASSERT NOT iv_key IS INITIAL. + + TRY. + ls_repo = read( iv_key ). + CATCH zcx_abapgit_not_found. + zcx_abapgit_exception=>raise( 'key not found' ). + ENDTRY. + + ls_repo-url = iv_url. + ls_content-data_str = to_xml( ls_repo ). + + mo_db->update( iv_type = zcl_abapgit_persistence_db=>c_type_repo + iv_value = iv_key + iv_data = ls_content-data_str ). + + ENDMETHOD. ENDCLASS. diff --git a/src/persist/zcl_abapgit_persistence_repo.clas.xml b/src/persist/zcl_abapgit_persistence_repo.clas.xml index 2b10c76ef..7610764e3 100644 --- a/src/persist/zcl_abapgit_persistence_repo.clas.xml +++ b/src/persist/zcl_abapgit_persistence_repo.clas.xml @@ -7,7 +7,7 @@ 1 E Repo persistence - 2 + 1 1 X X diff --git a/src/persist/zif_abapgit_persist_repo.intf.abap b/src/persist/zif_abapgit_persist_repo.intf.abap new file mode 100644 index 000000000..226f324af --- /dev/null +++ b/src/persist/zif_abapgit_persist_repo.intf.abap @@ -0,0 +1,90 @@ +INTERFACE zif_abapgit_persist_repo + PUBLIC . + + + METHODS add + IMPORTING + !iv_url TYPE string + !iv_branch_name TYPE string + !iv_branch TYPE zif_abapgit_definitions=>ty_sha1 OPTIONAL + !iv_package TYPE devclass + !iv_offline TYPE sap_bool DEFAULT abap_false + !is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit + RETURNING + VALUE(rv_key) TYPE zif_abapgit_persistence=>ty_repo-key + RAISING + zcx_abapgit_exception . + METHODS delete + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + RAISING + zcx_abapgit_exception . + METHODS list + RETURNING + VALUE(rt_repos) TYPE zif_abapgit_persistence=>tt_repo + RAISING + zcx_abapgit_exception . + METHODS lock + IMPORTING + !iv_mode TYPE enqmode + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + RAISING + zcx_abapgit_exception . + METHODS read + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + RETURNING + VALUE(rs_repo) TYPE zif_abapgit_persistence=>ty_repo + RAISING + zcx_abapgit_exception + zcx_abapgit_not_found . + METHODS update_branch_name + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !iv_branch_name TYPE zif_abapgit_persistence=>ty_repo_xml-branch_name + RAISING + zcx_abapgit_exception . + METHODS update_deserialized + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_value + !iv_deserialized_at TYPE timestampl + !iv_deserialized_by TYPE xubname + RAISING + zcx_abapgit_exception . + METHODS update_dot_abapgit + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !is_dot_abapgit TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit + RAISING + zcx_abapgit_exception . + METHODS update_head_branch + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !iv_head_branch TYPE zif_abapgit_persistence=>ty_repo_xml-head_branch + RAISING + zcx_abapgit_exception . + METHODS update_local_checksums + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !it_checksums TYPE zif_abapgit_persistence=>ty_repo_xml-local_checksums + RAISING + zcx_abapgit_exception . + METHODS update_local_settings + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !is_settings TYPE zif_abapgit_persistence=>ty_repo_xml-local_settings + RAISING + zcx_abapgit_exception . + METHODS update_offline + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !iv_offline TYPE zif_abapgit_persistence=>ty_repo_xml-offline + RAISING + zcx_abapgit_exception . + METHODS update_url + IMPORTING + !iv_key TYPE zif_abapgit_persistence=>ty_repo-key + !iv_url TYPE zif_abapgit_persistence=>ty_repo_xml-url + RAISING + zcx_abapgit_exception . +ENDINTERFACE. diff --git a/src/persist/zif_abapgit_persist_repo.intf.xml b/src/persist/zif_abapgit_persist_repo.intf.xml new file mode 100644 index 000000000..f33206e80 --- /dev/null +++ b/src/persist/zif_abapgit_persist_repo.intf.xml @@ -0,0 +1,16 @@ + + + + + + ZIF_ABAPGIT_PERSIST_REPO + 1 + E + Repo persistence + 2 + 1 + X + + + + diff --git a/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap index c00d7a0b3..68730187f 100644 --- a/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap @@ -125,7 +125,7 @@ ENDCLASS. -CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_OVER IMPLEMENTATION. METHOD add_direction_option. @@ -323,12 +323,11 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. METHOD render_content. - DATA: lo_persistence_repo TYPE REF TO zcl_abapgit_persistence_repo, - lt_overview TYPE tty_overview. + DATA: lt_overview TYPE tty_overview. - CREATE OBJECT lo_persistence_repo. - lt_overview = map_repo_list_to_overview( lo_persistence_repo->list( ) ). + lt_overview = map_repo_list_to_overview( + zcl_abapgit_persist_factory=>get_repo( )->list( ) ). apply_order_by( CHANGING ct_overview = lt_overview ). @@ -351,82 +350,79 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. ENDMETHOD. "render_content - METHOD render_text_input. + METHOD render_header_bar. - DATA lv_attrs TYPE string. + io_html->add( |
| ). - CREATE OBJECT ro_html. + render_order_by( io_html ). + render_order_by_direction( io_html ). - IF iv_value IS NOT INITIAL. - lv_attrs = | value="{ iv_value }"|. - ENDIF. + io_html->add( render_text_input( iv_name = |filter| + iv_label = |Filter: | + iv_value = mv_filter ) ). - IF iv_max_length IS NOT INITIAL. - lv_attrs = | maxlength="{ iv_max_length }"|. - ENDIF. + io_html->add( || ). - ro_html->add( || ). - ro_html->add( || ). + io_html->add( |
| ). - ENDMETHOD. " render_text_input - - - METHOD zif_abapgit_gui_page~on_event. - - DATA: lv_key TYPE zif_abapgit_persistence=>ty_value. - - CASE iv_action. - WHEN gc_action-select. - - lv_key = iv_getdata. - - zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lv_key ). - - TRY. - zcl_abapgit_repo_srv=>get_instance( )->get( lv_key )->refresh( ). - CATCH zcx_abapgit_exception ##NO_HANDLER. - ENDTRY. - - ev_state = zif_abapgit_definitions=>gc_event_state-go_back. - - WHEN gc_action-change_order_by. - - parse_change_order_by( it_postdata ). - ev_state = zif_abapgit_definitions=>gc_event_state-re_render. - - WHEN gc_action-direction. - - parse_direction( it_postdata ). - ev_state = zif_abapgit_definitions=>gc_event_state-re_render. - - WHEN gc_action-apply_filter. - - parse_filter( it_postdata ). - ev_state = zif_abapgit_definitions=>gc_event_state-re_render. - - ENDCASE. + io_html->add( || ). + io_html->add( || ). ENDMETHOD. - METHOD render_table_header. - io_html->add( || ). - io_html->add( || ). - io_html->add( |Favorite| ). - io_html->add( |Type| ). - io_html->add( |Key| ). - io_html->add( |Name| ). - io_html->add( |Url| ). - io_html->add( |Package| ). - io_html->add( |Branch name| ). - io_html->add( |Creator| ). - io_html->add( |Created at [{ mv_time_zone }]| ). - io_html->add( |Deserialized by| ). - io_html->add( |Deserialized at [{ mv_time_zone }]| ). - io_html->add( || ). - io_html->add( '' ). - io_html->add( '' ). - io_html->add( '' ). + METHOD render_order_by. + + io_html->add( |Order by: | ). + + ENDMETHOD. + + + METHOD render_order_by_direction. + + io_html->add( || ). ENDMETHOD. @@ -501,81 +497,48 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. ENDMETHOD. - METHOD render_order_by. + METHOD render_table_header. - io_html->add( |Order by: | ). + io_html->add( || ). + io_html->add( || ). + io_html->add( |Favorite| ). + io_html->add( |Type| ). + io_html->add( |Key| ). + io_html->add( |Name| ). + io_html->add( |Url| ). + io_html->add( |Package| ). + io_html->add( |Branch name| ). + io_html->add( |Creator| ). + io_html->add( |Created at [{ mv_time_zone }]| ). + io_html->add( |Deserialized by| ). + io_html->add( |Deserialized at [{ mv_time_zone }]| ). + io_html->add( || ). + io_html->add( '' ). + io_html->add( '' ). + io_html->add( '' ). ENDMETHOD. - METHOD render_order_by_direction. + METHOD render_text_input. - io_html->add( || ). + IF iv_max_length IS NOT INITIAL. + lv_attrs = | maxlength="{ iv_max_length }"|. + ENDIF. - ENDMETHOD. + ro_html->add( || ). + ro_html->add( || ). + ENDMETHOD. " render_text_input - METHOD render_header_bar. - - io_html->add( |
| ). - - render_order_by( io_html ). - render_order_by_direction( io_html ). - - io_html->add( render_text_input( iv_name = |filter| - iv_label = |Filter: | - iv_value = mv_filter ) ). - - io_html->add( || ). - - io_html->add( |
| ). - - io_html->add( || ). - io_html->add( || ). - - ENDMETHOD. METHOD scripts. @@ -585,4 +548,41 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. ENDMETHOD. + + METHOD zif_abapgit_gui_page~on_event. + + DATA: lv_key TYPE zif_abapgit_persistence=>ty_value. + + CASE iv_action. + WHEN gc_action-select. + + lv_key = iv_getdata. + + zcl_abapgit_persistence_user=>get_instance( )->set_repo_show( lv_key ). + + TRY. + zcl_abapgit_repo_srv=>get_instance( )->get( lv_key )->refresh( ). + CATCH zcx_abapgit_exception ##NO_HANDLER. + ENDTRY. + + ev_state = zif_abapgit_definitions=>gc_event_state-go_back. + + WHEN gc_action-change_order_by. + + parse_change_order_by( it_postdata ). + ev_state = zif_abapgit_definitions=>gc_event_state-re_render. + + WHEN gc_action-direction. + + parse_direction( it_postdata ). + ev_state = zif_abapgit_definitions=>gc_event_state-re_render. + + WHEN gc_action-apply_filter. + + parse_filter( it_postdata ). + ev_state = zif_abapgit_definitions=>gc_event_state-re_render. + + ENDCASE. + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_abapgit_repo.clas.abap b/src/zcl_abapgit_repo.clas.abap index 2cfe05b77..2461628ea 100644 --- a/src/zcl_abapgit_repo.clas.abap +++ b/src/zcl_abapgit_repo.clas.abap @@ -153,14 +153,9 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. METHOD delete. - DATA: lo_persistence TYPE REF TO zcl_abapgit_persistence_repo. + zcl_abapgit_persist_factory=>get_repo( )->delete( ms_data-key ). - - CREATE OBJECT lo_persistence. - - lo_persistence->delete( ms_data-key ). - - ENDMETHOD. "delete + ENDMETHOD. METHOD delete_checks. @@ -492,7 +487,7 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. * TODO: refactor - DATA: lo_persistence TYPE REF TO zcl_abapgit_persistence_repo. + DATA: li_persistence TYPE REF TO zif_abapgit_persist_repo. ASSERT it_checksums IS SUPPLIED @@ -505,60 +500,59 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. OR iv_deserialized_by IS SUPPLIED OR iv_deserialized_at IS SUPPLIED. - CREATE OBJECT lo_persistence. + li_persistence = zcl_abapgit_persist_factory=>get_repo( ). IF it_checksums IS SUPPLIED. - lo_persistence->update_local_checksums( + li_persistence->update_local_checksums( iv_key = ms_data-key it_checksums = it_checksums ). ms_data-local_checksums = it_checksums. ENDIF. IF iv_url IS SUPPLIED. - lo_persistence->update_url( + li_persistence->update_url( iv_key = ms_data-key iv_url = iv_url ). ms_data-url = iv_url. ENDIF. IF iv_branch_name IS SUPPLIED. - lo_persistence->update_branch_name( + li_persistence->update_branch_name( iv_key = ms_data-key iv_branch_name = iv_branch_name ). ms_data-branch_name = iv_branch_name. ENDIF. IF iv_head_branch IS SUPPLIED. - lo_persistence->update_head_branch( + li_persistence->update_head_branch( iv_key = ms_data-key iv_head_branch = iv_head_branch ). ms_data-head_branch = iv_head_branch. ENDIF. IF iv_offline IS SUPPLIED. - lo_persistence->update_offline( + li_persistence->update_offline( iv_key = ms_data-key iv_offline = iv_offline ). ms_data-offline = iv_offline. ENDIF. IF is_dot_abapgit IS SUPPLIED. - lo_persistence->update_dot_abapgit( + li_persistence->update_dot_abapgit( iv_key = ms_data-key is_dot_abapgit = is_dot_abapgit ). ms_data-dot_abapgit = is_dot_abapgit. ENDIF. IF is_local_settings IS SUPPLIED. - lo_persistence->update_local_settings( + li_persistence->update_local_settings( iv_key = ms_data-key is_settings = is_local_settings ). ms_data-local_settings = is_local_settings. ENDIF. - IF iv_deserialized_at IS SUPPLIED - OR iv_deserialized_by IS SUPPLIED. - lo_persistence->update_deserialized( + IF iv_deserialized_at IS SUPPLIED OR iv_deserialized_by IS SUPPLIED. + li_persistence->update_deserialized( iv_key = ms_data-key iv_deserialized_at = iv_deserialized_at iv_deserialized_by = iv_deserialized_by ). diff --git a/src/zcl_abapgit_repo_srv.clas.abap b/src/zcl_abapgit_repo_srv.clas.abap index 3d077a769..4c17d2375 100644 --- a/src/zcl_abapgit_repo_srv.clas.abap +++ b/src/zcl_abapgit_repo_srv.clas.abap @@ -23,7 +23,6 @@ CLASS zcl_abapgit_repo_srv DEFINITION CLASS-DATA gi_ref TYPE REF TO zif_abapgit_repo_srv . DATA mv_init TYPE abap_bool VALUE abap_false ##NO_TEXT. - DATA mo_persistence TYPE REF TO zcl_abapgit_persistence_repo . DATA mt_list TYPE zif_abapgit_definitions=>ty_repo_ref_tt . METHODS refresh @@ -35,16 +34,15 @@ CLASS zcl_abapgit_repo_srv DEFINITION VALUE(rv_allowed) TYPE abap_bool . METHODS add IMPORTING - io_repo TYPE REF TO zcl_abapgit_repo + !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception . METHODS validate_sub_super_packages IMPORTING - iv_package TYPE devclass - it_repos TYPE zif_abapgit_persistence=>tt_repo + !iv_package TYPE devclass + !it_repos TYPE zif_abapgit_persistence=>tt_repo RAISING - zcx_abapgit_exception. - + zcx_abapgit_exception . ENDCLASS. @@ -72,8 +70,8 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. METHOD constructor. - CREATE OBJECT mo_persistence. - ENDMETHOD. "class_constructor + + ENDMETHOD. METHOD get_instance. @@ -107,7 +105,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. CLEAR mt_list. - lt_list = mo_persistence->list( ). + lt_list = zcl_abapgit_persist_factory=>get_repo( )->list( ). LOOP AT lt_list ASSIGNING . IF -offline = abap_false. CREATE OBJECT lo_online @@ -238,7 +236,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. validate_package( iv_package ). - lv_key = mo_persistence->add( + lv_key = zcl_abapgit_persist_factory=>get_repo( )->add( iv_url = iv_url iv_branch_name = '' iv_package = iv_package @@ -246,7 +244,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. is_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ) ). TRY. - ls_repo = mo_persistence->read( lv_key ). + ls_repo = zcl_abapgit_persist_factory=>get_repo( )->read( lv_key ). CATCH zcx_abapgit_not_found. zcx_abapgit_exception=>raise( 'new_offline not found' ). ENDTRY. @@ -273,14 +271,14 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. validate_package( iv_package ). zcl_abapgit_url=>validate( |{ iv_url }| ). - lv_key = mo_persistence->add( + lv_key = zcl_abapgit_persist_factory=>get_repo( )->add( iv_url = iv_url iv_branch_name = iv_branch_name iv_package = iv_package iv_offline = abap_false is_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ) ). TRY. - ls_repo = mo_persistence->read( lv_key ). + ls_repo = zcl_abapgit_persist_factory=>get_repo( )->read( lv_key ). CATCH zcx_abapgit_not_found. zcx_abapgit_exception=>raise( 'new_online not found' ). ENDTRY. @@ -377,7 +375,7 @@ CLASS ZCL_ABAPGIT_REPO_SRV IMPLEMENTATION. ENDIF. " make sure its not already in use for a different repository - lt_repos = mo_persistence->list( ). + lt_repos = zcl_abapgit_persist_factory=>get_repo( )->list( ). READ TABLE lt_repos WITH KEY package = iv_package TRANSPORTING NO FIELDS. IF sy-subrc = 0. zcx_abapgit_exception=>raise( |Package { iv_package } already in use| ).