From 96a010614b406ea27f1a9972b3096aa2bc61c406 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Wed, 16 Apr 2025 07:59:21 +0200 Subject: [PATCH 1/2] refactor `zcl_abapgit_user_record` (#7211) --- .../zcl_abapgit_background_push_au.clas.abap | 6 +- src/env/zcl_abapgit_user_record.clas.abap | 86 +++++++++---------- ..._abapgit_user_record.clas.testclasses.abap | 2 +- .../lib/zcl_abapgit_gui_chunk_lib.clas.abap | 2 +- .../db/zcl_abapgit_gui_page_db.clas.abap | 2 +- .../zcl_abapgit_gui_page_sett_info.clas.abap | 2 +- .../zcl_abapgit_gui_page_commit.clas.abap | 4 +- .../pages/zcl_abapgit_gui_page_tags.clas.abap | 4 +- 8 files changed, 54 insertions(+), 54 deletions(-) diff --git a/src/background/zcl_abapgit_background_push_au.clas.abap b/src/background/zcl_abapgit_background_push_au.clas.abap index 756fd871c..946aa62bf 100644 --- a/src/background/zcl_abapgit_background_push_au.clas.abap +++ b/src/background/zcl_abapgit_background_push_au.clas.abap @@ -72,9 +72,9 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION. DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record. - lo_user_record = zcl_abapgit_user_record=>get_instance( iv_changed_by ). - rs_user-name = lo_user_record->get_name( ). - rs_user-email = lo_user_record->get_email( ). + lo_user_record = zcl_abapgit_user_record=>get_instance( ). + rs_user-name = lo_user_record->get_name( iv_changed_by ). + rs_user-email = lo_user_record->get_email( iv_changed_by ). * If no email, fall back to localhost/default email IF rs_user-email IS INITIAL. diff --git a/src/env/zcl_abapgit_user_record.clas.abap b/src/env/zcl_abapgit_user_record.clas.abap index 47e848a35..2a43a9c36 100644 --- a/src/env/zcl_abapgit_user_record.clas.abap +++ b/src/env/zcl_abapgit_user_record.clas.abap @@ -6,20 +6,20 @@ CLASS zcl_abapgit_user_record DEFINITION PUBLIC SECTION. CLASS-METHODS reset. CLASS-METHODS get_instance - IMPORTING - !iv_user TYPE sy-uname RETURNING VALUE(ro_user) TYPE REF TO zcl_abapgit_user_record. - METHODS constructor - IMPORTING - !iv_user TYPE sy-uname. + METHODS get_name + IMPORTING + iv_username TYPE sy-uname RETURNING VALUE(rv_name) TYPE string. METHODS get_email + IMPORTING + iv_username TYPE sy-uname RETURNING VALUE(rv_email) TYPE string. - CLASS-METHODS get_title + METHODS get_title IMPORTING iv_username TYPE sy-uname RETURNING @@ -28,18 +28,14 @@ CLASS zcl_abapgit_user_record DEFINITION PRIVATE SECTION. TYPES: BEGIN OF ty_user, - user TYPE sy-uname, - o_user TYPE REF TO zcl_abapgit_user_record, + user TYPE sy-uname, + name TYPE string, + email TYPE string, END OF ty_user. CLASS-DATA gt_user TYPE HASHED TABLE OF ty_user WITH UNIQUE KEY user. - DATA: BEGIN OF ms_user, - name TYPE string, - email TYPE string, - END OF ms_user . - - METHODS check_user_exists + CLASS-METHODS check_user_exists IMPORTING iv_user TYPE sy-uname EXPORTING @@ -48,19 +44,35 @@ CLASS zcl_abapgit_user_record DEFINITION RAISING zcx_abapgit_exception. - METHODS get_user_dtls_from_other_clnt + CLASS-METHODS get_user_dtls_from_other_clnt IMPORTING - iv_user TYPE sy-uname. + iv_user TYPE sy-uname + RETURNING + VALUE(rs_user) TYPE ty_user. + + CLASS-METHODS build_cache + IMPORTING + iv_user TYPE sy-uname + RETURNING + VALUE(rs_user) TYPE ty_user. + + CLASS-METHODS read_cache + IMPORTING + iv_user TYPE sy-uname + RETURNING + VALUE(rs_user) TYPE ty_user. ENDCLASS. CLASS zcl_abapgit_user_record IMPLEMENTATION. + METHOD get_instance. + CREATE OBJECT ro_user. + ENDMETHOD. METHOD get_title. -* the queried username might not exist, so this method is static -* refactored for open-abap compatibility +* the queried username might not exist, refactored for open-abap compatibility DATA lr_addr3 TYPE REF TO data. FIELD-SYMBOLS TYPE any. @@ -120,9 +132,7 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION. ENDMETHOD. - METHOD constructor. - - DATA ls_user TYPE ty_user. + METHOD build_cache. " Get user details TRY. @@ -130,41 +140,31 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION. EXPORTING iv_user = iv_user IMPORTING - ev_fullname = ms_user-name - ev_email = ms_user-email ). + ev_fullname = rs_user-name + ev_email = rs_user-email ). CATCH zcx_abapgit_exception. " Could not find user, try to get from other clients - get_user_dtls_from_other_clnt( iv_user ). + rs_user = get_user_dtls_from_other_clnt( iv_user ). ENDTRY. - " If the user has been found add it to the list - IF ms_user-name IS NOT INITIAL AND ms_user-email IS NOT INITIAL. - ls_user-user = iv_user. - ls_user-o_user = me. - INSERT ls_user INTO TABLE gt_user. - ENDIF. + rs_user-user = iv_user. + INSERT rs_user INTO TABLE gt_user. ENDMETHOD. METHOD get_email. - rv_email = ms_user-email. + rv_email = read_cache( iv_username )-email. ENDMETHOD. - METHOD get_instance. + METHOD read_cache. - FIELD-SYMBOLS TYPE ty_user. - - READ TABLE gt_user ASSIGNING WITH TABLE KEY user = iv_user. - IF sy-subrc = 0. - ro_user = -o_user. - ELSE. - CREATE OBJECT ro_user - EXPORTING - iv_user = iv_user. + READ TABLE gt_user INTO rs_user WITH TABLE KEY user = iv_user. + IF sy-subrc <> 0. + rs_user = build_cache( iv_user ). ENDIF. ENDMETHOD. @@ -172,7 +172,7 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION. METHOD get_name. - rv_name = ms_user-name. + rv_name = read_cache( iv_username )-name. ENDMETHOD. @@ -190,7 +190,7 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION. ORDER BY PRIMARY KEY. LOOP AT lt_dev_clients ASSIGNING . - SELECT SINGLE p~name_text a~smtp_addr INTO (ms_user-name, ms_user-email) + SELECT SINGLE u~bname p~name_text a~smtp_addr INTO (rs_user-user, rs_user-name, rs_user-email) FROM usr21 AS u INNER JOIN adrp AS p ON p~persnumber = u~persnumber AND p~client = u~mandt diff --git a/src/env/zcl_abapgit_user_record.clas.testclasses.abap b/src/env/zcl_abapgit_user_record.clas.testclasses.abap index 02ce85af2..72ab1eb1f 100644 --- a/src/env/zcl_abapgit_user_record.clas.testclasses.abap +++ b/src/env/zcl_abapgit_user_record.clas.testclasses.abap @@ -19,7 +19,7 @@ CLASS ltcl_user_record IMPLEMENTATION. DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record. zcl_abapgit_user_record=>reset( ). - lo_user_record = zcl_abapgit_user_record=>get_instance( c_wrong_user ). + lo_user_record = zcl_abapgit_user_record=>get_instance( ). cl_abap_unit_assert=>assert_equals( exp = 0 diff --git a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap index 2c3603836..68fcd1ae4 100644 --- a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap +++ b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap @@ -1323,7 +1323,7 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. ENDIF. IF iv_username <> zcl_abapgit_objects_super=>c_user_unknown AND iv_suppress_title = abap_false. - lv_title = zcl_abapgit_user_record=>get_title( iv_username ). + lv_title = zcl_abapgit_user_record=>get_instance( )->get_title( iv_username ). ENDIF. lv_jump = |{ zif_abapgit_definitions=>c_action-jump_user }?user={ iv_username }|. diff --git a/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap b/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap index e6e435979..dcca8eef3 100644 --- a/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap +++ b/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap @@ -367,7 +367,7 @@ CLASS zcl_abapgit_gui_page_db IMPLEMENTATION. WHEN zcl_abapgit_persistence_db=>c_type_user. lv_descr = 'Personal Settings'. - ls_explanation-value = zcl_abapgit_user_record=>get_instance( is_data-value )->get_name( ). + ls_explanation-value = zcl_abapgit_user_record=>get_instance( )->get_name( is_data-value ). WHEN zcl_abapgit_persistence_db=>c_type_settings. lv_descr = 'Global Settings'. diff --git a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap index b723d2b8d..f256a63c6 100644 --- a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap +++ b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap @@ -194,7 +194,7 @@ CLASS zcl_abapgit_gui_page_sett_info IMPLEMENTATION. ENDIF. IF iv_username <> zcl_abapgit_objects_super=>c_user_unknown. - lv_title = zcl_abapgit_user_record=>get_title( iv_username ). + lv_title = zcl_abapgit_user_record=>get_instance( )->get_title( iv_username ). ENDIF. rv_user = iv_username. diff --git a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap index 2949faa54..5ca2e2cf7 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap @@ -241,7 +241,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ENDIF. IF rv_email IS INITIAL. " get default from user record - rv_email = zcl_abapgit_user_record=>get_instance( sy-uname )->get_email( ). + rv_email = zcl_abapgit_user_record=>get_instance( )->get_email( sy-uname ). ENDIF. ENDMETHOD. @@ -259,7 +259,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ENDIF. IF rv_user IS INITIAL. " get default from user record - rv_user = zcl_abapgit_user_record=>get_instance( sy-uname )->get_name( ). + rv_user = zcl_abapgit_user_record=>get_instance( )->get_name( sy-uname ). ENDIF. ENDMETHOD. diff --git a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap index 9e589bd70..8071ebc42 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap @@ -237,7 +237,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION. ENDIF. IF rv_email IS INITIAL. " get default from user record - rv_email = zcl_abapgit_user_record=>get_instance( sy-uname )->get_email( ). + rv_email = zcl_abapgit_user_record=>get_instance( )->get_email( sy-uname ). ENDIF. ENDMETHOD. @@ -255,7 +255,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION. ENDIF. IF rv_user IS INITIAL. " get default from user record - rv_user = zcl_abapgit_user_record=>get_instance( sy-uname )->get_name( ). + rv_user = zcl_abapgit_user_record=>get_instance( )->get_name( sy-uname ). ENDIF. ENDMETHOD. From c21dc53e00d5a05a4b66a37061c8eb784e9d5b63 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 18 Apr 2025 09:46:58 +0200 Subject: [PATCH 2/2] user record: interface and factory (#7212) --- package.json | 6 +- .../zcl_abapgit_background_push_au.clas.abap | 8 +- src/env/zcl_abapgit_env_factory.clas.abap | 21 +++ src/env/zcl_abapgit_env_factory.clas.xml | 16 ++ src/env/zcl_abapgit_env_injector.clas.abap | 14 ++ src/env/zcl_abapgit_env_injector.clas.xml | 16 ++ src/env/zcl_abapgit_user_record.clas.abap | 163 ++++++++---------- ..._abapgit_user_record.clas.testclasses.abap | 4 +- src/env/zif_abapgit_user_record.intf.abap | 21 +++ src/env/zif_abapgit_user_record.intf.xml | 15 ++ .../lib/zcl_abapgit_gui_chunk_lib.clas.abap | 2 +- .../db/zcl_abapgit_gui_page_db.clas.abap | 2 +- .../zcl_abapgit_gui_page_sett_info.clas.abap | 2 +- .../zcl_abapgit_gui_page_commit.clas.abap | 4 +- .../pages/zcl_abapgit_gui_page_tags.clas.abap | 4 +- 15 files changed, 192 insertions(+), 106 deletions(-) create mode 100644 src/env/zcl_abapgit_env_factory.clas.abap create mode 100644 src/env/zcl_abapgit_env_factory.clas.xml create mode 100644 src/env/zcl_abapgit_env_injector.clas.abap create mode 100644 src/env/zcl_abapgit_env_injector.clas.xml create mode 100644 src/env/zif_abapgit_user_record.intf.abap create mode 100644 src/env/zif_abapgit_user_record.intf.xml diff --git a/package.json b/package.json index 57511d5a8..14a7c2bb5 100644 --- a/package.json +++ b/package.json @@ -23,11 +23,11 @@ ] }, "devDependencies": { - "@abaplint/cli": "^2.113.108", + "@abaplint/cli": "^2.113.109", "@abaplint/database-sqlite": "^2.10.24", - "@abaplint/runtime": "^2.10.42", + "@abaplint/runtime": "^2.10.44", "express": "^4.21.2", - "@abaplint/transpiler-cli": "^2.10.42", + "@abaplint/transpiler-cli": "^2.10.44", "globals": "^16.0.0", "abapmerge": "^0.16.6", "c8": "^10.1.3", diff --git a/src/background/zcl_abapgit_background_push_au.clas.abap b/src/background/zcl_abapgit_background_push_au.clas.abap index 946aa62bf..5b24bea21 100644 --- a/src/background/zcl_abapgit_background_push_au.clas.abap +++ b/src/background/zcl_abapgit_background_push_au.clas.abap @@ -69,12 +69,12 @@ CLASS zcl_abapgit_background_push_au IMPLEMENTATION. METHOD determine_user_details. - DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record. + DATA li_user_record TYPE REF TO zif_abapgit_user_record. - lo_user_record = zcl_abapgit_user_record=>get_instance( ). - rs_user-name = lo_user_record->get_name( iv_changed_by ). - rs_user-email = lo_user_record->get_email( iv_changed_by ). + li_user_record = zcl_abapgit_env_factory=>get_user_record( ). + rs_user-name = li_user_record->get_name( iv_changed_by ). + rs_user-email = li_user_record->get_email( iv_changed_by ). * If no email, fall back to localhost/default email IF rs_user-email IS INITIAL. diff --git a/src/env/zcl_abapgit_env_factory.clas.abap b/src/env/zcl_abapgit_env_factory.clas.abap new file mode 100644 index 000000000..f5483da6b --- /dev/null +++ b/src/env/zcl_abapgit_env_factory.clas.abap @@ -0,0 +1,21 @@ +CLASS zcl_abapgit_env_factory DEFINITION PUBLIC GLOBAL FRIENDS zcl_abapgit_env_injector. + PUBLIC SECTION. + CLASS-METHODS get_user_record + RETURNING + VALUE(ri_user_record) TYPE REF TO zif_abapgit_user_record. + + PRIVATE SECTION. + CLASS-DATA gi_user_record TYPE REF TO zif_abapgit_user_record. +ENDCLASS. + +CLASS zcl_abapgit_env_factory IMPLEMENTATION. + + METHOD get_user_record. + IF gi_user_record IS NOT BOUND. + CREATE OBJECT gi_user_record TYPE zcl_abapgit_user_record. + ENDIF. + + ri_user_record = gi_user_record. + ENDMETHOD. + +ENDCLASS. diff --git a/src/env/zcl_abapgit_env_factory.clas.xml b/src/env/zcl_abapgit_env_factory.clas.xml new file mode 100644 index 000000000..b0ec0972c --- /dev/null +++ b/src/env/zcl_abapgit_env_factory.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_ENV_FACTORY + E + ZCL_ABAPGIT_ENV_FACTORY + 1 + X + X + X + + + + diff --git a/src/env/zcl_abapgit_env_injector.clas.abap b/src/env/zcl_abapgit_env_injector.clas.abap new file mode 100644 index 000000000..44290b6c8 --- /dev/null +++ b/src/env/zcl_abapgit_env_injector.clas.abap @@ -0,0 +1,14 @@ +CLASS zcl_abapgit_env_injector DEFINITION PUBLIC. + PUBLIC SECTION. + CLASS-METHODS set_user_record + IMPORTING + !ii_user_record TYPE REF TO zif_abapgit_user_record. +ENDCLASS. + +CLASS zcl_abapgit_env_injector IMPLEMENTATION. + + METHOD set_user_record. + zcl_abapgit_env_factory=>gi_user_record = ii_user_record. + ENDMETHOD. + +ENDCLASS. diff --git a/src/env/zcl_abapgit_env_injector.clas.xml b/src/env/zcl_abapgit_env_injector.clas.xml new file mode 100644 index 000000000..e65678311 --- /dev/null +++ b/src/env/zcl_abapgit_env_injector.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_ENV_INJECTOR + E + ZCL_ABAPGIT_ENV_INJECTOR + 1 + X + X + X + + + + diff --git a/src/env/zcl_abapgit_user_record.clas.abap b/src/env/zcl_abapgit_user_record.clas.abap index 2a43a9c36..60e8f9c05 100644 --- a/src/env/zcl_abapgit_user_record.clas.abap +++ b/src/env/zcl_abapgit_user_record.clas.abap @@ -1,29 +1,14 @@ CLASS zcl_abapgit_user_record DEFINITION PUBLIC FINAL - CREATE PRIVATE. + CREATE PRIVATE + GLOBAL FRIENDS zcl_abapgit_env_factory. PUBLIC SECTION. CLASS-METHODS reset. - CLASS-METHODS get_instance - RETURNING - VALUE(ro_user) TYPE REF TO zcl_abapgit_user_record. - METHODS get_name - IMPORTING - iv_username TYPE sy-uname - RETURNING - VALUE(rv_name) TYPE string. - METHODS get_email - IMPORTING - iv_username TYPE sy-uname - RETURNING - VALUE(rv_email) TYPE string. - METHODS get_title - IMPORTING - iv_username TYPE sy-uname - RETURNING - VALUE(rv_title) TYPE string. + INTERFACES zif_abapgit_user_record. + PROTECTED SECTION. PRIVATE SECTION. TYPES: @@ -65,41 +50,30 @@ ENDCLASS. -CLASS zcl_abapgit_user_record IMPLEMENTATION. - METHOD get_instance. - CREATE OBJECT ro_user. - ENDMETHOD. +CLASS ZCL_ABAPGIT_USER_RECORD IMPLEMENTATION. - METHOD get_title. -* the queried username might not exist, refactored for open-abap compatibility - - DATA lr_addr3 TYPE REF TO data. - FIELD-SYMBOLS TYPE any. - FIELD-SYMBOLS TYPE simple. + METHOD build_cache. + " Get user details TRY. - CREATE DATA lr_addr3 TYPE ('ADDR3_VAL'). - CATCH cx_sy_create_data_error. - RETURN. + check_user_exists( + EXPORTING + iv_user = iv_user + IMPORTING + ev_fullname = rs_user-name + ev_email = rs_user-email ). + CATCH zcx_abapgit_exception. + " Could not find user, try to get from other clients + rs_user = get_user_dtls_from_other_clnt( iv_user ). ENDTRY. - ASSIGN lr_addr3->* TO . - CALL FUNCTION 'SUSR_USER_ADDRESS_READ' - EXPORTING - user_name = iv_username - IMPORTING - user_address = - EXCEPTIONS - user_address_not_found = 1 - OTHERS = 2. - IF sy-subrc = 0. - ASSIGN COMPONENT 'NAME_TEXT' OF STRUCTURE TO . - rv_title = . - ENDIF. + rs_user-user = iv_user. + INSERT rs_user INTO TABLE gt_user. ENDMETHOD. + METHOD check_user_exists. DATA lt_return TYPE STANDARD TABLE OF bapiret2 WITH DEFAULT KEY. @@ -132,51 +106,6 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION. ENDMETHOD. - METHOD build_cache. - - " Get user details - TRY. - check_user_exists( - EXPORTING - iv_user = iv_user - IMPORTING - ev_fullname = rs_user-name - ev_email = rs_user-email ). - CATCH zcx_abapgit_exception. - " Could not find user, try to get from other clients - rs_user = get_user_dtls_from_other_clnt( iv_user ). - ENDTRY. - - rs_user-user = iv_user. - INSERT rs_user INTO TABLE gt_user. - - ENDMETHOD. - - - METHOD get_email. - - rv_email = read_cache( iv_username )-email. - - ENDMETHOD. - - - METHOD read_cache. - - READ TABLE gt_user INTO rs_user WITH TABLE KEY user = iv_user. - IF sy-subrc <> 0. - rs_user = build_cache( iv_user ). - ENDIF. - - ENDMETHOD. - - - METHOD get_name. - - rv_name = read_cache( iv_username )-name. - - ENDMETHOD. - - METHOD get_user_dtls_from_other_clnt. CONSTANTS lc_cc_category TYPE string VALUE 'C'. @@ -211,7 +140,61 @@ CLASS zcl_abapgit_user_record IMPLEMENTATION. ENDMETHOD. + METHOD read_cache. + + READ TABLE gt_user INTO rs_user WITH TABLE KEY user = iv_user. + IF sy-subrc <> 0. + rs_user = build_cache( iv_user ). + ENDIF. + + ENDMETHOD. + + METHOD reset. CLEAR gt_user. ENDMETHOD. + + + METHOD zif_abapgit_user_record~get_email. + + rv_email = read_cache( iv_username )-email. + + ENDMETHOD. + + + METHOD zif_abapgit_user_record~get_name. + + rv_name = read_cache( iv_username )-name. + + ENDMETHOD. + + + METHOD zif_abapgit_user_record~get_title. +* the queried username might not exist, refactored for open-abap compatibility + + DATA lr_addr3 TYPE REF TO data. + FIELD-SYMBOLS TYPE any. + FIELD-SYMBOLS TYPE simple. + + TRY. + CREATE DATA lr_addr3 TYPE ('ADDR3_VAL'). + CATCH cx_sy_create_data_error. + RETURN. + ENDTRY. + ASSIGN lr_addr3->* TO . + + CALL FUNCTION 'SUSR_USER_ADDRESS_READ' + EXPORTING + user_name = iv_username + IMPORTING + user_address = + EXCEPTIONS + user_address_not_found = 1 + OTHERS = 2. + IF sy-subrc = 0. + ASSIGN COMPONENT 'NAME_TEXT' OF STRUCTURE TO . + rv_title = . + ENDIF. + + ENDMETHOD. ENDCLASS. diff --git a/src/env/zcl_abapgit_user_record.clas.testclasses.abap b/src/env/zcl_abapgit_user_record.clas.testclasses.abap index 72ab1eb1f..0770c462f 100644 --- a/src/env/zcl_abapgit_user_record.clas.testclasses.abap +++ b/src/env/zcl_abapgit_user_record.clas.testclasses.abap @@ -16,10 +16,10 @@ ENDCLASS. CLASS ltcl_user_record IMPLEMENTATION. METHOD test_invalid_user. - DATA: lo_user_record TYPE REF TO zcl_abapgit_user_record. + DATA li_user_record TYPE REF TO zif_abapgit_user_record. zcl_abapgit_user_record=>reset( ). - lo_user_record = zcl_abapgit_user_record=>get_instance( ). + li_user_record = zcl_abapgit_env_factory=>get_user_record( ). cl_abap_unit_assert=>assert_equals( exp = 0 diff --git a/src/env/zif_abapgit_user_record.intf.abap b/src/env/zif_abapgit_user_record.intf.abap new file mode 100644 index 000000000..baf376c26 --- /dev/null +++ b/src/env/zif_abapgit_user_record.intf.abap @@ -0,0 +1,21 @@ +INTERFACE zif_abapgit_user_record PUBLIC. + + METHODS get_name + IMPORTING + iv_username TYPE sy-uname + RETURNING + VALUE(rv_name) TYPE string. + + METHODS get_email + IMPORTING + iv_username TYPE sy-uname + RETURNING + VALUE(rv_email) TYPE string. + + METHODS get_title + IMPORTING + iv_username TYPE sy-uname + RETURNING + VALUE(rv_title) TYPE string. + +ENDINTERFACE. diff --git a/src/env/zif_abapgit_user_record.intf.xml b/src/env/zif_abapgit_user_record.intf.xml new file mode 100644 index 000000000..5bb2af8cc --- /dev/null +++ b/src/env/zif_abapgit_user_record.intf.xml @@ -0,0 +1,15 @@ + + + + + + ZIF_ABAPGIT_USER_RECORD + E + ZIF_ABAPGIT_USER_RECORD + 2 + 1 + X + + + + diff --git a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap index 68fcd1ae4..5c7da27e9 100644 --- a/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap +++ b/src/ui/lib/zcl_abapgit_gui_chunk_lib.clas.abap @@ -1323,7 +1323,7 @@ CLASS zcl_abapgit_gui_chunk_lib IMPLEMENTATION. ENDIF. IF iv_username <> zcl_abapgit_objects_super=>c_user_unknown AND iv_suppress_title = abap_false. - lv_title = zcl_abapgit_user_record=>get_instance( )->get_title( iv_username ). + lv_title = zcl_abapgit_env_factory=>get_user_record( )->get_title( iv_username ). ENDIF. lv_jump = |{ zif_abapgit_definitions=>c_action-jump_user }?user={ iv_username }|. diff --git a/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap b/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap index dcca8eef3..99aa38c7b 100644 --- a/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap +++ b/src/ui/pages/db/zcl_abapgit_gui_page_db.clas.abap @@ -367,7 +367,7 @@ CLASS zcl_abapgit_gui_page_db IMPLEMENTATION. WHEN zcl_abapgit_persistence_db=>c_type_user. lv_descr = 'Personal Settings'. - ls_explanation-value = zcl_abapgit_user_record=>get_instance( )->get_name( is_data-value ). + ls_explanation-value = zcl_abapgit_env_factory=>get_user_record( )->get_name( is_data-value ). WHEN zcl_abapgit_persistence_db=>c_type_settings. lv_descr = 'Global Settings'. diff --git a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap index f256a63c6..cc18bef81 100644 --- a/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap +++ b/src/ui/pages/sett/zcl_abapgit_gui_page_sett_info.clas.abap @@ -194,7 +194,7 @@ CLASS zcl_abapgit_gui_page_sett_info IMPLEMENTATION. ENDIF. IF iv_username <> zcl_abapgit_objects_super=>c_user_unknown. - lv_title = zcl_abapgit_user_record=>get_instance( )->get_title( iv_username ). + lv_title = zcl_abapgit_env_factory=>get_user_record( )->get_title( iv_username ). ENDIF. rv_user = iv_username. diff --git a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap index 5ca2e2cf7..387954a76 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_commit.clas.abap @@ -241,7 +241,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ENDIF. IF rv_email IS INITIAL. " get default from user record - rv_email = zcl_abapgit_user_record=>get_instance( )->get_email( sy-uname ). + rv_email = zcl_abapgit_env_factory=>get_user_record( )->get_email( sy-uname ). ENDIF. ENDMETHOD. @@ -259,7 +259,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ENDIF. IF rv_user IS INITIAL. " get default from user record - rv_user = zcl_abapgit_user_record=>get_instance( )->get_name( sy-uname ). + rv_user = zcl_abapgit_env_factory=>get_user_record( )->get_name( sy-uname ). ENDIF. ENDMETHOD. diff --git a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap index 8071ebc42..b97f4079b 100644 --- a/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap +++ b/src/ui/pages/zcl_abapgit_gui_page_tags.clas.abap @@ -237,7 +237,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION. ENDIF. IF rv_email IS INITIAL. " get default from user record - rv_email = zcl_abapgit_user_record=>get_instance( )->get_email( sy-uname ). + rv_email = zcl_abapgit_env_factory=>get_user_record( )->get_email( sy-uname ). ENDIF. ENDMETHOD. @@ -255,7 +255,7 @@ CLASS zcl_abapgit_gui_page_tags IMPLEMENTATION. ENDIF. IF rv_user IS INITIAL. " get default from user record - rv_user = zcl_abapgit_user_record=>get_instance( )->get_name( sy-uname ). + rv_user = zcl_abapgit_env_factory=>get_user_record( )->get_name( sy-uname ). ENDIF. ENDMETHOD.