From 7a34c9de21da16f8038ba18373c0ff589815bc60 Mon Sep 17 00:00:00 2001 From: bigld Date: Mon, 24 Apr 2017 08:13:07 +0200 Subject: [PATCH 1/4] New Parameter for Commit Message Length - #648 Two setting parameter to adjust commit comment length (50-100) and Body line size (72-100) --- src/zabapgit_definitions.prog.abap | 5 +- src/zabapgit_html_action_utils.prog.abap | 1 + src/zabapgit_page_commit.prog.abap | 17 +++-- src/zabapgit_page_settings.prog.abap | 84 ++++++++++++++++++++---- src/zabapgit_persistence.prog.abap | 79 ++++++++++++++++++++-- 5 files changed, 159 insertions(+), 27 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 9fbab5536..27b7117af 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -21,7 +21,7 @@ TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF ty_file_signature WITH UNIQUE KEY path filename. TYPES: BEGIN OF ty_file. - INCLUDE TYPE ty_file_signature. + INCLUDE TYPE ty_file_signature. TYPES: data TYPE xstring, END OF ty_file. TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY. @@ -127,7 +127,7 @@ TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY. TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY. TYPES: BEGIN OF ty_tpool. - INCLUDE TYPE textpool. + INCLUDE TYPE textpool. TYPES: split TYPE c LENGTH 8. TYPES: END OF ty_tpool. @@ -185,6 +185,7 @@ CONSTANTS: BEGIN OF gc_action_type, dummy TYPE c VALUE '_', END OF gc_action_type. +CONSTANTS: gc_crlf TYPE abap_cr_lf VALUE cl_abap_char_utilities=>cr_lf. CONSTANTS: gc_newline TYPE abap_char1 VALUE cl_abap_char_utilities=>newline. CONSTANTS: gc_english TYPE spras VALUE 'E'. diff --git a/src/zabapgit_html_action_utils.prog.abap b/src/zabapgit_html_action_utils.prog.abap index f560272e3..da423f823 100644 --- a/src/zabapgit_html_action_utils.prog.abap +++ b/src/zabapgit_html_action_utils.prog.abap @@ -302,6 +302,7 @@ CLASS lcl_html_action_utils IMPLEMENTATION. CLEAR es_fields. CONCATENATE LINES OF it_postdata INTO lv_string. + REPLACE ALL OCCURRENCES OF gc_crlf IN lv_string WITH lc_replace. REPLACE ALL OCCURRENCES OF gc_newline IN lv_string WITH lc_replace. lt_fields = parse_fields( lv_string ). diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 5ca69ca03..5dcc5015e 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -155,9 +155,11 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. METHOD render_form. - DATA: lo_user TYPE REF TO lcl_persistence_user, - lv_user TYPE string, - lv_email TYPE string. + DATA: lo_user TYPE REF TO lcl_persistence_user. + DATA: lv_user TYPE string. + DATA: lv_email TYPE string. + DATA: lv_s_param TYPE string. + DATA: lo_settings TYPE REF TO lcl_settings. * see https://git-scm.com/book/ch5-2.html * commit messages should be max 50 characters @@ -189,13 +191,18 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. iv_label = 'committer e-mail' iv_value = lv_email ) ). + lo_settings = lcl_app=>settings( )->read( ). + + lv_s_param = lo_settings->get_commitmsg_comment_length( ). + ro_html->add( render_text_input( iv_name = 'comment' iv_label = 'comment' - iv_max_length = '72' ) ). + iv_max_length = lv_s_param ) ). ro_html->add( '
' ). ro_html->add( '' ). - ro_html->add( '' ). + + ro_html->add( || ). ro_html->add( '' ). ro_html->add( '
' ). diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index 06692df16..c80a04a08 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -32,6 +32,8 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page. RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_max_lines RETURNING VALUE(ro_html) TYPE REF TO lcl_html. + METHODS render_commit_msg + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS build_settings IMPORTING it_post_fields TYPE tihttpnvp. @@ -64,9 +66,11 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ro_html->add( render_form_begin( ) ). ro_html->add( render_proxy( ) ). ro_html->add( |
| ). - ro_html->add( render_development_internals( ) ). - ro_html->add( |
| ). ro_html->add( render_max_lines( ) ). + ro_html->add( |
| ). + ro_html->add( render_commit_msg( ) ). + ro_html->add( |
| ). + ro_html->add( render_development_internals( ) ). ro_html->add( render_form_end( ) ). ENDMETHOD. "render_content @@ -99,6 +103,7 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ENDMETHOD. METHOD lif_gui_page~on_event. +* todo, check input values eg INT DATA: lt_post_fields TYPE tihttpnvp. @@ -124,45 +129,83 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. METHOD build_settings. - DATA: ls_post_field TYPE ihttpnvp, - lv_max_lines_as_integer TYPE i. + DATA: lv_i_param_value TYPE i. + FIELD-SYMBOLS: TYPE ihttpnvp. CREATE OBJECT mo_settings. - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'proxy_url'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_url'. IF sy-subrc <> 0. mv_error = abap_true. ENDIF. - mo_settings->set_proxy_url( ls_post_field-value ). + mo_settings->set_proxy_url( -value ). - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'proxy_port'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_port'. IF sy-subrc <> 0. mv_error = abap_true. ENDIF. - mo_settings->set_proxy_port( ls_post_field-value ). + mo_settings->set_proxy_port( -value ). - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'proxy_auth'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_auth'. IF sy-subrc = 0. mo_settings->set_proxy_authentication( abap_true ). ELSE. mo_settings->set_proxy_authentication( abap_false ). ENDIF. - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'critical_tests'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'critical_tests'. IF sy-subrc = 0. mo_settings->set_run_critical_tests( abap_true ). ELSE. mo_settings->set_run_critical_tests( abap_false ). ENDIF. - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'max_lines'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'max_lines'. IF sy-subrc = 0. - lv_max_lines_as_integer = ls_post_field-value. - mo_settings->set_max_lines( lv_max_lines_as_integer ). + lv_i_param_value = -value. + mo_settings->set_max_lines( lv_i_param_value ). ELSE. mo_settings->set_max_lines( 0 ). ENDIF. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'comment_length'. + IF sy-subrc = 0. + + lv_i_param_value = -value. + + IF lv_i_param_value < lcl_settings=>c_commitmsg_comment_length_dft. + lv_i_param_value = lcl_settings=>c_commitmsg_comment_length_dft. + ELSEIF lv_i_param_value > lcl_settings=>c_commitmsg_comment_length_max. + lv_i_param_value = lcl_settings=>c_commitmsg_comment_length_max. + ENDIF. + + mo_settings->set_commitmsg_comment_length( lv_i_param_value ). + + ELSE. + + mo_settings->set_commitmsg_comment_length( lcl_settings=>c_commitmsg_comment_length_dft ). + + ENDIF. + + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'body_size'. + IF sy-subrc = 0. + + lv_i_param_value = -value. + + IF lv_i_param_value < lcl_settings=>c_commitmsg_body_size_dft. + lv_i_param_value = lcl_settings=>c_commitmsg_body_size_dft. + ELSEIF lv_i_param_value > lcl_settings=>c_commitmsg_body_size_max. + lv_i_param_value = lcl_settings=>c_commitmsg_body_size_max. + ENDIF. + + mo_settings->set_commitmsg_body_size( lv_i_param_value ). + + ELSE. + + mo_settings->set_commitmsg_body_size( lcl_settings=>c_commitmsg_body_size_dft ). + + ENDIF. + ENDMETHOD. @@ -251,4 +294,19 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ro_html->add( |
| ). ENDMETHOD. + METHOD render_commit_msg. + CREATE OBJECT ro_html. + + ro_html->add( |

Commit Message

| ). + ro_html->add( || ). + ro_html->add( |
| ). + ro_html->add( `` ). + ro_html->add( |
| ). + ro_html->add( || ). + ro_html->add( |
| ). + ro_html->add( `` ). + ro_html->add( |
| ). + ro_html->add( |
| ). + ENDMETHOD. + ENDCLASS. diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index 7a14d0467..36aa10153 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -1534,6 +1534,11 @@ ENDCLASS. CLASS lcl_settings DEFINITION FINAL. PUBLIC SECTION. + CONSTANTS: c_commitmsg_comment_length_dft TYPE i VALUE 50. + CONSTANTS: c_commitmsg_comment_length_max TYPE i VALUE 100. + CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72. + CONSTANTS: c_commitmsg_body_size_max TYPE i VALUE 100. + METHODS set_proxy_url IMPORTING iv_url TYPE string. @@ -1563,13 +1568,25 @@ CLASS lcl_settings DEFINITION FINAL. METHODS get_max_lines RETURNING VALUE(rv_lines) TYPE i. + METHODS set_commitmsg_comment_length + IMPORTING iv_length TYPE i. + METHODS get_commitmsg_comment_length + RETURNING + VALUE(rv_length) TYPE i. + METHODS set_commitmsg_body_size + IMPORTING iv_length TYPE i. + METHODS get_commitmsg_body_size + RETURNING + VALUE(rv_length) TYPE i. PRIVATE SECTION. - DATA: mv_proxy_url TYPE string, - mv_proxy_port TYPE string, - mv_proxy_auth TYPE string, - mv_run_critical_tests TYPE abap_bool, - mv_lines TYPE i. + DATA: mv_proxy_url TYPE string, + mv_proxy_port TYPE string, + mv_proxy_auth TYPE string, + mv_run_critical_tests TYPE abap_bool, + mv_lines TYPE i, + mv_commitmsg_comment_length TYPE i, + mv_commitmsg_body_size TYPE i. ENDCLASS. @@ -1615,6 +1632,21 @@ CLASS lcl_settings IMPLEMENTATION. mv_lines = iv_lines. ENDMETHOD. + METHOD get_commitmsg_comment_length. + rv_length = mv_commitmsg_comment_length. + ENDMETHOD. + + METHOD set_commitmsg_comment_length. + mv_commitmsg_comment_length = iv_length. + ENDMETHOD. + + METHOD get_commitmsg_body_size. + rv_length = mv_commitmsg_body_size. + ENDMETHOD. + + METHOD set_commitmsg_body_size. + mv_commitmsg_body_size = iv_length. + ENDMETHOD. ENDCLASS. CLASS lcl_persistence_settings DEFINITION FINAL. @@ -1661,6 +1693,16 @@ CLASS lcl_persistence_settings IMPLEMENTATION. iv_value = 'MAX_LINES' iv_data = |{ io_settings->get_max_lines( ) }| ). + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'COMMENT_LEN' + iv_data = |{ io_settings->get_commitmsg_comment_length( ) }| ). + + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'BODY_SIZE' + iv_data = |{ io_settings->get_commitmsg_body_size( ) }| ). + ENDMETHOD. METHOD read. @@ -1669,7 +1711,9 @@ CLASS lcl_persistence_settings IMPLEMENTATION. lv_critical_tests_as_boolean TYPE abap_bool, lv_max_lines_as_string TYPE string, lv_flag TYPE abap_bool, - lv_max_lines_as_integer TYPE i. + lv_max_lines_as_integer TYPE i, + lv_s_param_value TYPE string, + lv_i_param_value TYPE i. CREATE OBJECT ro_settings. @@ -1710,15 +1754,36 @@ CLASS lcl_persistence_settings IMPLEMENTATION. CATCH lcx_not_found. ro_settings->set_run_critical_tests( abap_false ). ENDTRY. + TRY. lv_max_lines_as_string = lcl_app=>db( )->read( iv_type = 'SETTINGS' iv_value = 'MAX_LINES' ). lv_max_lines_as_integer = lv_max_lines_as_string. ro_settings->set_max_lines( lv_max_lines_as_integer ). - CATCH lcx_not_found. + CATCH lcx_not_found cx_sy_conversion_no_number. ro_settings->set_max_lines( 500 ). " default ENDTRY. + + TRY. + lv_s_param_value = lcl_app=>db( )->read( + iv_type = 'SETTINGS' + iv_value = 'COMMENT_LEN' ). + lv_i_param_value = lv_s_param_value. + ro_settings->set_commitmsg_comment_length( lv_i_param_value ). + CATCH lcx_not_found cx_sy_conversion_no_number. + ro_settings->set_commitmsg_comment_length( lcl_settings=>c_commitmsg_comment_length_dft ). " default + ENDTRY. + + TRY. + lv_s_param_value = lcl_app=>db( )->read( + iv_type = 'SETTINGS' + iv_value = 'BODY_SIZE' ). + lv_i_param_value = lv_s_param_value. + ro_settings->set_commitmsg_body_size( lv_i_param_value ). + CATCH lcx_not_found cx_sy_conversion_no_number. + ro_settings->set_commitmsg_body_size( lcl_settings=>c_commitmsg_body_size_dft ). " default + ENDTRY. ENDMETHOD. ENDCLASS. From 989801ac3c3c29b89a491757022523b2a92dfb91 Mon Sep 17 00:00:00 2001 From: bigld Date: Mon, 24 Apr 2017 08:29:08 +0200 Subject: [PATCH 2/4] abaplint Errors - #648 --- src/zabapgit_page_commit.prog.abap | 3 ++- src/zabapgit_page_settings.prog.abap | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 5dcc5015e..96433d500 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -202,7 +202,8 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( '' ). - ro_html->add( || ). + ro_html->add( || ). ro_html->add( '' ). ro_html->add( '
' ). diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index c80a04a08..77afb7432 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -300,11 +300,13 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ro_html->add( |

Commit Message

| ). ro_html->add( || ). ro_html->add( |
| ). - ro_html->add( `` ). + ro_html->add( || ). ro_html->add( |
| ). ro_html->add( || ). ro_html->add( |
| ). - ro_html->add( `` ). + ro_html->add( || ). ro_html->add( |
| ). ro_html->add( |
| ). ENDMETHOD. From 4fc5bc10f69d5df3960accc0b8cb0361cb633009 Mon Sep 17 00:00:00 2001 From: bigld Date: Wed, 26 Apr 2017 07:37:23 +0200 Subject: [PATCH 3/4] remove max length for commit comment/body line size --- src/zabapgit_page_commit.prog.abap | 28 ++++++++++++++++++---------- src/zabapgit_page_settings.prog.abap | 16 ++++++---------- src/zabapgit_persistence.prog.abap | 2 -- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 96433d500..c90664864 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -37,10 +37,10 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page. RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_text_input - IMPORTING iv_name TYPE string - iv_label TYPE string - iv_value TYPE string OPTIONAL - iv_max_length TYPE string OPTIONAL + IMPORTING iv_name TYPE string + iv_label TYPE string + iv_value TYPE string OPTIONAL + iv_max_length TYPE string OPTIONAL RETURNING VALUE(ro_html) TYPE REF TO lcl_html. ENDCLASS. @@ -155,11 +155,14 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. METHOD render_form. - DATA: lo_user TYPE REF TO lcl_persistence_user. - DATA: lv_user TYPE string. - DATA: lv_email TYPE string. - DATA: lv_s_param TYPE string. - DATA: lo_settings TYPE REF TO lcl_settings. + CONSTANTS: lc_body_col_max TYPE i VALUE 150. + + DATA: lo_user TYPE REF TO lcl_persistence_user. + DATA: lv_user TYPE string. + DATA: lv_email TYPE string. + DATA: lv_s_param TYPE string. + DATA: lo_settings TYPE REF TO lcl_settings. + data: lv_body_size type i. * see https://git-scm.com/book/ch5-2.html * commit messages should be max 50 characters @@ -202,8 +205,13 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( '' ). + lv_body_size = lo_settings->get_commitmsg_body_size( ). + IF lv_body_size > lc_body_col_max. + lv_body_size = lc_body_col_max. + ENDIF. ro_html->add( || ). + |{ lv_body_size }">| ). + ro_html->add( '' ). ro_html->add( '
' ). diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index 77afb7432..cb4891456 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -173,10 +173,8 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. lv_i_param_value = -value. - IF lv_i_param_value < lcl_settings=>c_commitmsg_comment_length_dft. + IF lv_i_param_value < lcl_settings=>c_commitmsg_comment_length_dft. lv_i_param_value = lcl_settings=>c_commitmsg_comment_length_dft. - ELSEIF lv_i_param_value > lcl_settings=>c_commitmsg_comment_length_max. - lv_i_param_value = lcl_settings=>c_commitmsg_comment_length_max. ENDIF. mo_settings->set_commitmsg_comment_length( lv_i_param_value ). @@ -192,10 +190,8 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. lv_i_param_value = -value. - IF lv_i_param_value < lcl_settings=>c_commitmsg_body_size_dft. + IF lv_i_param_value < lcl_settings=>c_commitmsg_body_size_dft. lv_i_param_value = lcl_settings=>c_commitmsg_body_size_dft. - ELSEIF lv_i_param_value > lcl_settings=>c_commitmsg_body_size_max. - lv_i_param_value = lcl_settings=>c_commitmsg_body_size_max. ENDIF. mo_settings->set_commitmsg_body_size( lv_i_param_value ). @@ -298,14 +294,14 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( |

Commit Message

| ). - ro_html->add( || ). + ro_html->add( || ). ro_html->add( |
| ). - ro_html->add( |add( || ). ro_html->add( |
| ). - ro_html->add( || ). + ro_html->add( || ). ro_html->add( |
| ). - ro_html->add( |add( || ). ro_html->add( |
| ). ro_html->add( |
| ). diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index 36aa10153..ac690d3e6 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -1535,9 +1535,7 @@ CLASS lcl_settings DEFINITION FINAL. PUBLIC SECTION. CONSTANTS: c_commitmsg_comment_length_dft TYPE i VALUE 50. - CONSTANTS: c_commitmsg_comment_length_max TYPE i VALUE 100. CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72. - CONSTANTS: c_commitmsg_body_size_max TYPE i VALUE 100. METHODS set_proxy_url IMPORTING From a44cb82fab09988aa985bb9f1d723fcb35776a01 Mon Sep 17 00:00:00 2001 From: bigld Date: Wed, 26 Apr 2017 07:45:50 +0200 Subject: [PATCH 4/4] formatting --- src/zabapgit_page_commit.prog.abap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index c90664864..3cb752154 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -37,10 +37,10 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page. RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_text_input - IMPORTING iv_name TYPE string - iv_label TYPE string - iv_value TYPE string OPTIONAL - iv_max_length TYPE string OPTIONAL + IMPORTING iv_name TYPE string + iv_label TYPE string + iv_value TYPE string OPTIONAL + iv_max_length TYPE string OPTIONAL RETURNING VALUE(ro_html) TYPE REF TO lcl_html. ENDCLASS.