mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-29 19:26:29 +08:00
user record: interface and factory (#7212)
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Some checks failed
main-build / build-merged (push) Has been cancelled
main-build / auto-tag (push) Has been cancelled
main-build / coverage (push) Has been cancelled
main-build / auto-tag-artifact (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
This commit is contained in:
parent
96a010614b
commit
c21dc53e00
|
@ -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",
|
||||
|
|
|
@ -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.
|
||||
|
|
21
src/env/zcl_abapgit_env_factory.clas.abap
vendored
Normal file
21
src/env/zcl_abapgit_env_factory.clas.abap
vendored
Normal file
|
@ -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.
|
16
src/env/zcl_abapgit_env_factory.clas.xml
vendored
Normal file
16
src/env/zcl_abapgit_env_factory.clas.xml
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_ENV_FACTORY</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>ZCL_ABAPGIT_ENV_FACTORY</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
14
src/env/zcl_abapgit_env_injector.clas.abap
vendored
Normal file
14
src/env/zcl_abapgit_env_injector.clas.abap
vendored
Normal file
|
@ -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.
|
16
src/env/zcl_abapgit_env_injector.clas.xml
vendored
Normal file
16
src/env/zcl_abapgit_env_injector.clas.xml
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_ENV_INJECTOR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>ZCL_ABAPGIT_ENV_INJECTOR</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
163
src/env/zcl_abapgit_user_record.clas.abap
vendored
163
src/env/zcl_abapgit_user_record.clas.abap
vendored
|
@ -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 <ls_addr3> TYPE any.
|
||||
FIELD-SYMBOLS <lv_simple> 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 <ls_addr3>.
|
||||
|
||||
CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
|
||||
EXPORTING
|
||||
user_name = iv_username
|
||||
IMPORTING
|
||||
user_address = <ls_addr3>
|
||||
EXCEPTIONS
|
||||
user_address_not_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc = 0.
|
||||
ASSIGN COMPONENT 'NAME_TEXT' OF STRUCTURE <ls_addr3> TO <lv_simple>.
|
||||
rv_title = <lv_simple>.
|
||||
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 <ls_addr3> TYPE any.
|
||||
FIELD-SYMBOLS <lv_simple> TYPE simple.
|
||||
|
||||
TRY.
|
||||
CREATE DATA lr_addr3 TYPE ('ADDR3_VAL').
|
||||
CATCH cx_sy_create_data_error.
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
ASSIGN lr_addr3->* TO <ls_addr3>.
|
||||
|
||||
CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
|
||||
EXPORTING
|
||||
user_name = iv_username
|
||||
IMPORTING
|
||||
user_address = <ls_addr3>
|
||||
EXCEPTIONS
|
||||
user_address_not_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc = 0.
|
||||
ASSIGN COMPONENT 'NAME_TEXT' OF STRUCTURE <ls_addr3> TO <lv_simple>.
|
||||
rv_title = <lv_simple>.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -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
|
||||
|
|
21
src/env/zif_abapgit_user_record.intf.abap
vendored
Normal file
21
src/env/zif_abapgit_user_record.intf.abap
vendored
Normal file
|
@ -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.
|
15
src/env/zif_abapgit_user_record.intf.xml
vendored
Normal file
15
src/env/zif_abapgit_user_record.intf.xml
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOINTERF>
|
||||
<CLSNAME>ZIF_ABAPGIT_USER_RECORD</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>ZIF_ABAPGIT_USER_RECORD</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOINTERF>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -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 }|.
|
||||
|
|
|
@ -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'.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue
Block a user