From b096124be9b170ee8a2aee074227fb7d7669d29e Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 4 Sep 2016 10:44:18 +0300 Subject: [PATCH 1/3] #310 persistence and page-commit logic --- src/zabapgit_page_commit.prog.abap | 18 ++++-- src/zabapgit_persistence.prog.abap | 99 +++++++++++++++++++++++++++++- 2 files changed, 110 insertions(+), 7 deletions(-) diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 97b972e3b..45642d6cc 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -80,7 +80,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. DATA: lo_user TYPE REF TO lcl_persistence_user, lv_user TYPE string, - lv_key TYPE string, + lv_key TYPE lcl_persistence_db=>ty_value, lv_email TYPE string. * see https://git-scm.com/book/ch5-2.html @@ -88,10 +88,18 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. * body should wrap at 72 characters lo_user = lcl_app=>user( ). - lv_user = lo_user->get_username( ). - lv_email = lo_user->get_email( ). lv_key = mo_repo->get_key( ). + lv_user = lo_user->get_repo_username( lv_key ). + IF lv_user IS INITIAL. + lv_user = lo_user->get_username( ). + ENDIF. + + lv_email = lo_user->get_repo_email( lv_key ). + IF lv_email IS INITIAL. + lv_email = lo_user->get_email( ). + ENDIF. + CREATE OBJECT ro_html. ro_html->add( '
' ). @@ -245,8 +253,8 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ls_fields = lcl_html_action_utils=>parse_commit_request( it_postdata ). lo_user = lcl_app=>user( ). - lo_user->set_username( ls_fields-username ). - lo_user->set_email( ls_fields-email ). + lo_user->set_repo_username( iv_key = mo_repo->get_key( ) iv_username = ls_fields-username ). + lo_user->set_repo_email( iv_key = mo_repo->get_key( ) iv_email = ls_fields-email ). IF ls_fields-username IS INITIAL. lcx_exception=>raise( 'empty username' ). diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index 05fa30cec..bacd2f930 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -706,6 +706,26 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RETURNING VALUE(rv_key) TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception. + METHODS set_repo_username + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + iv_username TYPE string + RAISING lcx_exception. + + METHODS get_repo_username + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + RETURNING VALUE(rv_username) TYPE string + RAISING lcx_exception. + + METHODS set_repo_email + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + iv_email TYPE string + RAISING lcx_exception. + + METHODS get_repo_email + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + RETURNING VALUE(rv_email) TYPE string + RAISING lcx_exception. + PRIVATE SECTION. CONSTANTS c_type_user TYPE lcl_persistence_db=>ty_type VALUE 'USER'. @@ -716,10 +736,18 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. TYPE STANDARD TABLE OF lcl_persistence_repo=>ty_repo-key WITH DEFAULT KEY. - TYPES: BEGIN OF ty_user, + TYPES: BEGIN OF ty_repo_config, + key TYPE lcl_persistence_repo=>ty_repo-key, username TYPE string, email TYPE string, - repo_show TYPE lcl_persistence_repo=>ty_repo-key, + END OF ty_repo_config. + TYPES: ty_repo_config_tt TYPE STANDARD TABLE OF ty_repo_config WITH DEFAULT KEY. + + TYPES: BEGIN OF ty_user, + username TYPE string, + email TYPE string, + repo_show TYPE lcl_persistence_repo=>ty_repo-key, + repo_config TYPE ty_repo_config_tt, END OF ty_user. METHODS constructor @@ -742,6 +770,16 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. IMPORTING is_user TYPE ty_user RAISING lcx_exception. + METHODS read_repo_config + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + RETURNING VALUE(rs_repo_config) TYPE ty_repo_config + RAISING lcx_exception. + + METHODS update_repo_config + IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + is_repo_config TYPE ty_repo_config + RAISING lcx_exception. + ENDCLASS. "lcl_persistence_user DEFINITION *----------------------------------------------------------------------* @@ -1059,6 +1097,63 @@ CLASS lcl_persistence_user IMPLEMENTATION. ENDMETHOD. + METHOD read_repo_config. + DATA lt_repo_config TYPE ty_repo_config_tt. + + lt_repo_config = read( )-repo_config. + READ TABLE lt_repo_config INTO rs_repo_config WITH KEY key = iv_key. + + ENDMETHOD. "read_repo_config + + METHOD update_repo_config. + DATA ls_user TYPE ty_user. + FIELD-SYMBOLS TYPE ty_repo_config. + + ls_user = read( ). + + READ TABLE ls_user-repo_config ASSIGNING WITH KEY key = iv_key. + IF sy-subrc IS NOT INITIAL. + APPEND INITIAL LINE TO ls_user-repo_config ASSIGNING . + ENDIF. + = is_repo_config. + -key = iv_key. + + update( ls_user ). + + ENDMETHOD. "update_repo_config + + METHOD set_repo_username. + + DATA: ls_repo_config TYPE ty_repo_config. + + ls_repo_config = read_repo_config( iv_key ). + ls_repo_config-username = iv_username. + update_repo_config( iv_key = iv_key is_repo_config = ls_repo_config ). + + ENDMETHOD. "set_repo_username + + METHOD get_repo_username. + + rv_username = read_repo_config( iv_key )-username. + + ENDMETHOD. "get_repo_username + + METHOD set_repo_email. + + DATA: ls_repo_config TYPE ty_repo_config. + + ls_repo_config = read_repo_config( iv_key ). + ls_repo_config-email = iv_email. + update_repo_config( iv_key = iv_key is_repo_config = ls_repo_config ). + + ENDMETHOD. "set_repo_email + + METHOD get_repo_email. + + rv_email = read_repo_config( iv_key )-email. + + ENDMETHOD. "get_repo_email + ENDCLASS. CLASS lcl_persistence_db IMPLEMENTATION. From 127d338119b4f2df201f875ecd5c5e6a09059f3b Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 4 Sep 2016 10:55:29 +0300 Subject: [PATCH 2/3] #310 default user in login, DRAFT --- src/zabapgit_git.prog.abap | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_git.prog.abap b/src/zabapgit_git.prog.abap index a903ad17e..1b67a9c3a 100644 --- a/src/zabapgit_git.prog.abap +++ b/src/zabapgit_git.prog.abap @@ -307,8 +307,12 @@ CLASS lcl_git_transport IMPLEMENTATION. METHOD acquire_login_details. DATA: - lv_user TYPE string, - lv_pass TYPE string. + lv_default_user TYPE string, + lv_user TYPE string, + lv_pass TYPE string. + +* lv_default_user = lcl_app=>user( )->get_repo_username( iv_key = ). +* lv_user = lv_default_user. lcl_password_dialog=>popup( EXPORTING @@ -321,6 +325,10 @@ CLASS lcl_git_transport IMPLEMENTATION. lcx_exception=>raise( 'HTTP 401, unauthorized' ). ENDIF. + IF lv_user <> lv_default_user. +* lcl_app=>user( )->get_repo_username( iv_key = iv_username = lv_user ). + ENDIF. + ii_client->authenticate( username = lv_user password = lv_pass ). From 7ae0698a44b16b37945d04fbfaea9e8b8608eb75 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 4 Sep 2016 19:49:21 +0300 Subject: [PATCH 3/3] #310 change to url as the key --- src/zabapgit_git.prog.abap | 6 ++-- src/zabapgit_page_commit.prog.abap | 8 +++--- src/zabapgit_password_dialog.prog.abap | 4 +++ src/zabapgit_persistence.prog.abap | 40 ++++++++++++++------------ 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/src/zabapgit_git.prog.abap b/src/zabapgit_git.prog.abap index 1b67a9c3a..91ba955f2 100644 --- a/src/zabapgit_git.prog.abap +++ b/src/zabapgit_git.prog.abap @@ -311,8 +311,8 @@ CLASS lcl_git_transport IMPLEMENTATION. lv_user TYPE string, lv_pass TYPE string. -* lv_default_user = lcl_app=>user( )->get_repo_username( iv_key = ). -* lv_user = lv_default_user. + lv_default_user = lcl_app=>user( )->get_repo_username( iv_url = iv_url ). + lv_user = lv_default_user. lcl_password_dialog=>popup( EXPORTING @@ -326,7 +326,7 @@ CLASS lcl_git_transport IMPLEMENTATION. ENDIF. IF lv_user <> lv_default_user. -* lcl_app=>user( )->get_repo_username( iv_key = iv_username = lv_user ). + lcl_app=>user( )->set_repo_username( iv_url = iv_url iv_username = lv_user ). ENDIF. ii_client->authenticate( diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 45642d6cc..1e04d19ee 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -90,12 +90,12 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. lo_user = lcl_app=>user( ). lv_key = mo_repo->get_key( ). - lv_user = lo_user->get_repo_username( lv_key ). + lv_user = lo_user->get_repo_username( mo_repo->get_url( ) ). IF lv_user IS INITIAL. lv_user = lo_user->get_username( ). ENDIF. - lv_email = lo_user->get_repo_email( lv_key ). + lv_email = lo_user->get_repo_email( mo_repo->get_url( ) ). IF lv_email IS INITIAL. lv_email = lo_user->get_email( ). ENDIF. @@ -253,8 +253,8 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ls_fields = lcl_html_action_utils=>parse_commit_request( it_postdata ). lo_user = lcl_app=>user( ). - lo_user->set_repo_username( iv_key = mo_repo->get_key( ) iv_username = ls_fields-username ). - lo_user->set_repo_email( iv_key = mo_repo->get_key( ) iv_email = ls_fields-email ). + lo_user->set_repo_username( iv_url = mo_repo->get_url( ) iv_username = ls_fields-username ). + lo_user->set_repo_email( iv_url = mo_repo->get_url( ) iv_email = ls_fields-email ). IF ls_fields-username IS INITIAL. lcx_exception=>raise( 'empty username' ). diff --git a/src/zabapgit_password_dialog.prog.abap b/src/zabapgit_password_dialog.prog.abap index 5914fa801..46a09e151 100644 --- a/src/zabapgit_password_dialog.prog.abap +++ b/src/zabapgit_password_dialog.prog.abap @@ -100,6 +100,10 @@ CLASS lcl_password_dialog IMPLEMENTATION. EXPORTING p_status = sy-pfkey TABLES p_exclude = lt_ucomm. + IF p_user IS NOT INITIAL. + SET CURSOR FIELD 'P_PASS'. + ENDIF. + ENDMETHOD. "on_screen_output METHOD on_screen_event. diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index bacd2f930..981578907 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -707,22 +707,22 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING lcx_exception. METHODS set_repo_username - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url iv_username TYPE string RAISING lcx_exception. METHODS get_repo_username - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url RETURNING VALUE(rv_username) TYPE string RAISING lcx_exception. METHODS set_repo_email - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url iv_email TYPE string RAISING lcx_exception. METHODS get_repo_email - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url RETURNING VALUE(rv_email) TYPE string RAISING lcx_exception. @@ -737,7 +737,7 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. WITH DEFAULT KEY. TYPES: BEGIN OF ty_repo_config, - key TYPE lcl_persistence_repo=>ty_repo-key, + url TYPE lcl_persistence_repo=>ty_repo-url, username TYPE string, email TYPE string, END OF ty_repo_config. @@ -771,12 +771,12 @@ CLASS lcl_persistence_user DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. RAISING lcx_exception. METHODS read_repo_config - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url RETURNING VALUE(rs_repo_config) TYPE ty_repo_config RAISING lcx_exception. METHODS update_repo_config - IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key + IMPORTING iv_url TYPE lcl_persistence_repo=>ty_repo-url is_repo_config TYPE ty_repo_config RAISING lcx_exception. @@ -1098,25 +1098,29 @@ CLASS lcl_persistence_user IMPLEMENTATION. ENDMETHOD. METHOD read_repo_config. - DATA lt_repo_config TYPE ty_repo_config_tt. + DATA: lt_repo_config TYPE ty_repo_config_tt, + lv_key TYPE string. + lv_key = to_lower( iv_url ). lt_repo_config = read( )-repo_config. - READ TABLE lt_repo_config INTO rs_repo_config WITH KEY key = iv_key. + READ TABLE lt_repo_config INTO rs_repo_config WITH KEY url = lv_key. ENDMETHOD. "read_repo_config METHOD update_repo_config. - DATA ls_user TYPE ty_user. + DATA: ls_user TYPE ty_user, + lv_key TYPE string. FIELD-SYMBOLS TYPE ty_repo_config. ls_user = read( ). + lv_key = to_lower( iv_url ). - READ TABLE ls_user-repo_config ASSIGNING WITH KEY key = iv_key. + READ TABLE ls_user-repo_config ASSIGNING WITH KEY url = lv_key. IF sy-subrc IS NOT INITIAL. APPEND INITIAL LINE TO ls_user-repo_config ASSIGNING . ENDIF. = is_repo_config. - -key = iv_key. + -url = lv_key. update( ls_user ). @@ -1126,15 +1130,15 @@ CLASS lcl_persistence_user IMPLEMENTATION. DATA: ls_repo_config TYPE ty_repo_config. - ls_repo_config = read_repo_config( iv_key ). + ls_repo_config = read_repo_config( iv_url ). ls_repo_config-username = iv_username. - update_repo_config( iv_key = iv_key is_repo_config = ls_repo_config ). + update_repo_config( iv_url = iv_url is_repo_config = ls_repo_config ). ENDMETHOD. "set_repo_username METHOD get_repo_username. - rv_username = read_repo_config( iv_key )-username. + rv_username = read_repo_config( iv_url )-username. ENDMETHOD. "get_repo_username @@ -1142,15 +1146,15 @@ CLASS lcl_persistence_user IMPLEMENTATION. DATA: ls_repo_config TYPE ty_repo_config. - ls_repo_config = read_repo_config( iv_key ). + ls_repo_config = read_repo_config( iv_url ). ls_repo_config-email = iv_email. - update_repo_config( iv_key = iv_key is_repo_config = ls_repo_config ). + update_repo_config( iv_url = iv_url is_repo_config = ls_repo_config ). ENDMETHOD. "set_repo_email METHOD get_repo_email. - rv_email = read_repo_config( iv_key )-email. + rv_email = read_repo_config( iv_url )-email. ENDMETHOD. "get_repo_email