diff --git a/src/persist/zif_abapgit_persist_repo.intf.abap b/src/persist/zif_abapgit_persist_repo.intf.abap index c4e1f258e..88c03d23f 100644 --- a/src/persist/zif_abapgit_persist_repo.intf.abap +++ b/src/persist/zif_abapgit_persist_repo.intf.abap @@ -4,8 +4,8 @@ INTERFACE zif_abapgit_persist_repo METHODS add IMPORTING - !iv_url TYPE string - !iv_branch_name TYPE string + !iv_url TYPE string OPTIONAL + !iv_branch_name TYPE string OPTIONAL !iv_branch TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL !iv_display_name TYPE string OPTIONAL !iv_package TYPE devclass diff --git a/src/repo/zcl_abapgit_repo.clas.abap b/src/repo/zcl_abapgit_repo.clas.abap index 4d9148651..e7f44ef70 100644 --- a/src/repo/zcl_abapgit_repo.clas.abap +++ b/src/repo/zcl_abapgit_repo.clas.abap @@ -839,7 +839,11 @@ CLASS zcl_abapgit_repo IMPLEMENTATION. METHOD zif_abapgit_repo~get_name. + " Local display name has priority over official name rv_name = ms_data-local_settings-display_name. + IF rv_name IS INITIAL. + rv_name = ms_data-dot_abapgit-name. + ENDIF. ENDMETHOD. diff --git a/src/repo/zcl_abapgit_repo_offline.clas.abap b/src/repo/zcl_abapgit_repo_offline.clas.abap index 02fb504fe..4fe39044f 100644 --- a/src/repo/zcl_abapgit_repo_offline.clas.abap +++ b/src/repo/zcl_abapgit_repo_offline.clas.abap @@ -6,14 +6,6 @@ CLASS zcl_abapgit_repo_offline DEFINITION PUBLIC SECTION. - METHODS set_name - IMPORTING - !iv_url TYPE string - RAISING - zcx_abapgit_exception . - - METHODS zif_abapgit_repo~get_name - REDEFINITION . METHODS has_remote_source REDEFINITION . PROTECTED SECTION. @@ -49,18 +41,4 @@ CLASS zcl_abapgit_repo_offline IMPLEMENTATION. set_files_remote( lt_backup ). ENDMETHOD. - - - METHOD set_name. - set( iv_url = iv_url ). - ENDMETHOD. - - - METHOD zif_abapgit_repo~get_name. - rv_name = super->get_name( ). - - IF rv_name IS INITIAL. - rv_name = ms_data-url. - ENDIF. - ENDMETHOD. ENDCLASS. diff --git a/src/repo/zcl_abapgit_repo_srv.clas.abap b/src/repo/zcl_abapgit_repo_srv.clas.abap index 98284b923..acf13d75a 100644 --- a/src/repo/zcl_abapgit_repo_srv.clas.abap +++ b/src/repo/zcl_abapgit_repo_srv.clas.abap @@ -532,18 +532,17 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION. iv_package = iv_package iv_ign_subpkg = iv_ign_subpkg ). - IF iv_url IS INITIAL. - zcx_abapgit_exception=>raise( 'Missing display name for repo' ). + IF iv_name IS INITIAL. + zcx_abapgit_exception=>raise( 'Missing name for repository' ). ENDIF. " Repo Settings lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ). lo_dot_abapgit->set_folder_logic( iv_folder_logic ). + lo_dot_abapgit->set_name( iv_name ). lo_dot_abapgit->set_abap_language_version( iv_abap_lang_vers ). lv_key = zcl_abapgit_persist_factory=>get_repo( )->add( - iv_url = iv_url - iv_branch_name = '' iv_package = iv_package iv_offline = abap_true is_dot_abapgit = lo_dot_abapgit->get_data( ) ). @@ -602,6 +601,7 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION. " Repo Settings lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ). lo_dot_abapgit->set_folder_logic( iv_folder_logic ). + lo_dot_abapgit->set_name( iv_name ). lo_dot_abapgit->set_abap_language_version( iv_abap_lang_vers ). lv_key = zcl_abapgit_persist_factory=>get_repo( )->add( diff --git a/src/repo/zif_abapgit_repo_srv.intf.abap b/src/repo/zif_abapgit_repo_srv.intf.abap index 7d7526353..f7b6b196a 100644 --- a/src/repo/zif_abapgit_repo_srv.intf.abap +++ b/src/repo/zif_abapgit_repo_srv.intf.abap @@ -48,7 +48,7 @@ INTERFACE zif_abapgit_repo_srv zcx_abapgit_exception . METHODS new_offline IMPORTING - !iv_url TYPE string + !iv_name TYPE string !iv_package TYPE devclass !iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-full !iv_labels TYPE string OPTIONAL @@ -64,6 +64,7 @@ INTERFACE zif_abapgit_repo_srv !iv_url TYPE string !iv_branch_name TYPE string OPTIONAL !iv_display_name TYPE string OPTIONAL + !iv_name TYPE string OPTIONAL !iv_package TYPE devclass !iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-prefix !iv_labels TYPE string OPTIONAL diff --git a/src/ui/pages/zcl_abapgit_gui_page_addofflin.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_addofflin.clas.abap index a9169dedd..a69bd2a28 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_addofflin.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_addofflin.clas.abap @@ -24,7 +24,7 @@ CLASS zcl_abapgit_gui_page_addofflin DEFINITION CONSTANTS: BEGIN OF c_id, - url TYPE string VALUE 'url', + name TYPE string VALUE 'name', package TYPE string VALUE 'package', folder_logic TYPE string VALUE 'folder_logic', labels TYPE string VALUE 'labels', @@ -115,9 +115,9 @@ CLASS zcl_abapgit_gui_page_addofflin IMPLEMENTATION. iv_help_page = 'https://docs.abapgit.org/guide-offline-install.html' ). ro_form->text( - iv_name = c_id-url + iv_name = c_id-name iv_required = abap_true - iv_label = 'Repository Name' + iv_label = 'Name' iv_hint = 'Unique name for repository' )->text( iv_name = c_id-package diff --git a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap index aabb94ade..72d677ced 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_sett_remo.clas.abap @@ -384,13 +384,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. METHOD get_form_schema. DATA: - lv_button TYPE string, - lv_label TYPE string, - lv_icon TYPE string, - lv_hint TYPE string, - lv_placeholder TYPE string, - lv_offline TYPE abap_bool, - lv_head_type TYPE ty_head_type. + lv_button TYPE string, + lv_icon TYPE string, + lv_offline TYPE abap_bool, + lv_head_type TYPE ty_head_type. IF io_existing_form_data IS BOUND AND io_existing_form_data->is_empty( ) = abap_false. lv_offline = io_existing_form_data->get( c_id-offline ). @@ -407,15 +404,11 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. iv_help_page = 'https://docs.abapgit.org/settings-remote.html' ). IF lv_offline = abap_true. - lv_button = 'Switch to Online'. - lv_icon = 'plug/darkgrey'. - lv_label = 'Repository Name'. + lv_button = 'Switch to Online'. + lv_icon = 'plug/darkgrey'. ELSE. - lv_button = 'Switch to Offline'. - lv_icon = 'cloud-upload-alt/darkgrey'. - lv_label = 'Git Repository URL'. - lv_hint = 'URL of original repository'. - lv_placeholder = 'https://github.com/...git'. + lv_button = 'Switch to Offline'. + lv_icon = 'cloud-upload-alt/darkgrey'. ENDIF. ro_form->start_group( @@ -426,16 +419,17 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. iv_name = c_id-repo_type iv_label = |Type of Repository: { zcl_abapgit_html=>icon( lv_icon ) }| iv_readonly = abap_true - )->hidden( c_id-offline - )->text( - iv_name = c_id-url - iv_condense = abap_true - iv_label = lv_label - iv_hint = lv_hint - iv_placeholder = lv_placeholder ). + )->hidden( c_id-offline ). IF lv_offline = abap_false. + ro_form->text( + iv_name = c_id-url + iv_condense = abap_true + iv_label = 'Git Repository URL' + iv_hint = 'URL of original repository' + iv_placeholder = 'https://github.com/...git' ). + ro_form->start_group( iv_name = c_id-head_group iv_label = 'Head' @@ -509,10 +503,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. METHOD get_remote_settings_from_form. - rs_settings-url = io_form_data->get( c_id-url ). rs_settings-offline = io_form_data->get( c_id-offline ). IF rs_settings-offline = abap_false. + rs_settings-url = io_form_data->get( c_id-url ). rs_settings-head_type = io_form_data->get( c_id-head_type ). CASE rs_settings-head_type. @@ -536,9 +530,8 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. METHOD get_remote_settings_from_repo. - DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, - lo_repo_offline TYPE REF TO zcl_abapgit_repo_offline, - lv_branch TYPE ty_remote_settings-branch. + DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, + lv_branch TYPE ty_remote_settings-branch. IF io_repo->is_offline( ) = abap_false. lo_repo_online ?= io_repo. @@ -580,9 +573,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. ENDIF. ELSE. - lo_repo_offline ?= io_repo. - - rs_settings-url = lo_repo_offline->get_name( ). rs_settings-offline = abap_true. ENDIF. @@ -632,11 +622,12 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. ro_form_data->set( iv_key = c_id-repo_type iv_val = lv_type ). - ro_form_data->set( - iv_key = c_id-url - iv_val = ms_settings_snapshot-url ). IF ms_settings_snapshot-offline = abap_false. + ro_form_data->set( + iv_key = c_id-url + iv_val = ms_settings_snapshot-url ). + ro_form_data->set( iv_key = c_id-head_type iv_val = ms_settings_snapshot-head_type ). @@ -684,7 +675,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, - lo_repo_offline TYPE REF TO zcl_abapgit_repo_offline, ls_settings_new TYPE ty_remote_settings. ls_settings_new = get_remote_settings_from_form( mo_form_data ). @@ -696,11 +686,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ). ENDIF. - IF mo_repo->is_offline( ) = abap_true. - " Offline: Save repo name - lo_repo_offline ?= mo_repo. - lo_repo_offline->set_name( ls_settings_new-url ). - ELSE. + IF mo_repo->is_offline( ) = abap_false. " Online: Save url lo_repo_online ?= mo_repo. lo_repo_online->set_url( ls_settings_new-url ). @@ -753,12 +739,9 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION. IF lv_offline_new = abap_true. lv_url = mo_form_data->get( c_id-url ). mv_offline_switch_saved_url = lv_url. - IF lv_url CP 'http*'. - lv_url = zcl_abapgit_url=>name( lv_url ). - mo_form_data->set( - iv_key = c_id-url - iv_val = lv_url ). - ENDIF. + mo_form_data->set( + iv_key = c_id-url + iv_val = '' ). mo_form_data->set( iv_key = c_id-repo_type iv_val = c_repo_type-offline ). diff --git a/src/ui/pages/zcl_abapgit_gui_page_sett_repo.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_sett_repo.clas.abap index b78c64ace..60109905e 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_sett_repo.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_sett_repo.clas.abap @@ -28,6 +28,7 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION CONSTANTS: BEGIN OF c_id, dot TYPE string VALUE 'dot', + name TYPE string VALUE 'name', main_language TYPE string VALUE 'main_language', i18n_langs TYPE string VALUE 'i18n_langs', use_lxe TYPE string VALUE 'use_lxe', @@ -196,6 +197,10 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION. ENDIF. ro_form->text( + iv_name = c_id-name + iv_label = 'Name' + iv_hint = 'Official name (can be overwritten by local display name)' + )->text( iv_name = c_id-version_constant iv_label = 'Version Constant' iv_placeholder = 'ZVERSION_CLASS=>VERSION_CONSTANT' @@ -240,6 +245,9 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION. lv_language = 'Unknown language; Check your .abapgit.xml file'. ENDIF. + ro_form_data->set( + iv_key = c_id-name + iv_val = ls_dot-name ). ro_form_data->set( iv_key = c_id-main_language iv_val = |{ lv_main_lang } ({ lv_language })| ). @@ -328,6 +336,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION. lo_dot = mo_repo->get_dot_abapgit( ). + lo_dot->set_name( mo_form_data->get( c_id-name ) ). lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ). lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ). lo_dot->set_version_constant( mo_form_data->get( c_id-version_constant ) ). diff --git a/src/ui/routing/zcl_abapgit_services_repo.clas.abap b/src/ui/routing/zcl_abapgit_services_repo.clas.abap index b51798ccc..976891b5b 100644 --- a/src/ui/routing/zcl_abapgit_services_repo.clas.abap +++ b/src/ui/routing/zcl_abapgit_services_repo.clas.abap @@ -377,7 +377,7 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. " create new repo and add to favorites ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_offline( - iv_url = is_repo_params-url + iv_name = is_repo_params-name iv_package = is_repo_params-package iv_folder_logic = is_repo_params-folder_logic iv_labels = is_repo_params-labels @@ -418,6 +418,7 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION. ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_online( iv_url = is_repo_params-url iv_branch_name = is_repo_params-branch_name + iv_name = is_repo_params-name iv_package = is_repo_params-package iv_display_name = is_repo_params-display_name iv_folder_logic = is_repo_params-folder_logic diff --git a/src/ui/routing/zif_abapgit_services_repo.intf.abap b/src/ui/routing/zif_abapgit_services_repo.intf.abap index 33f954fe4..9be7caa21 100644 --- a/src/ui/routing/zif_abapgit_services_repo.intf.abap +++ b/src/ui/routing/zif_abapgit_services_repo.intf.abap @@ -3,6 +3,7 @@ INTERFACE zif_abapgit_services_repo TYPES: BEGIN OF ty_repo_params, + name TYPE string, url TYPE string, package TYPE devclass, branch_name TYPE string, diff --git a/src/zcl_abapgit_migrations.clas.abap b/src/zcl_abapgit_migrations.clas.abap index 891766c67..72fc92b51 100644 --- a/src/zcl_abapgit_migrations.clas.abap +++ b/src/zcl_abapgit_migrations.clas.abap @@ -10,11 +10,38 @@ CLASS zcl_abapgit_migrations DEFINITION PROTECTED SECTION. PRIVATE SECTION. + + CLASS-METHODS migrate_offline_repos. ENDCLASS. -CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION. +CLASS zcl_abapgit_migrations IMPLEMENTATION. + + + METHOD migrate_offline_repos. + + DATA: + lt_repos TYPE zif_abapgit_repo_srv=>ty_repo_list, + li_repo LIKE LINE OF lt_repos, + lo_dot TYPE REF TO zcl_abapgit_dot_abapgit. + + TRY. + " Get offline repos only + lt_repos = zcl_abapgit_repo_srv=>get_instance( )->list( abap_true ). + + LOOP AT lt_repos INTO li_repo. + lo_dot = li_repo->get_dot_abapgit( ). + " Move repo name from URL fields to .abapGit.xml + IF li_repo->ms_data-url IS NOT INITIAL AND lo_dot->get_name( ) IS INITIAL. + lo_dot->set_name( li_repo->ms_data-url ). + li_repo->set_dot_abapgit( lo_dot ). + ENDIF. + ENDLOOP. + CATCH zcx_abapgit_exception ##NO_HANDLER. + ENDTRY. + + ENDMETHOD. METHOD run. @@ -28,5 +55,8 @@ CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION. " Migrate checksums from repo metadata to separate DB object zcl_abapgit_repo_cs_migration=>run( ). + " Migrate offline repo metadata + migrate_offline_repos( ). + ENDMETHOD. ENDCLASS.