From 4180373b46427c5fd1e984cbff614753e2dbd7a5 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Mon, 30 Jul 2018 16:33:52 +0200 Subject: [PATCH] Refactoring, HTML_ACTION_UTILS #1710 (#1720) * DBCONTENT_DECODE to ZCL_ABAPGIT_GUI_PAGE_DB_EDIT * PARSE_COMMIT_REQUEST to ZCL_ABAPGIT_GUI_PAGE_COMMI --- .../db/zcl_abapgit_gui_page_db_edit.clas.abap | 38 +++++- src/ui/zcl_abapgit_gui_page_commit.clas.abap | 119 ++++++++++++++---- .../zcl_abapgit_html_action_utils.clas.abap | 70 +---------- 3 files changed, 136 insertions(+), 91 deletions(-) diff --git a/src/ui/db/zcl_abapgit_gui_page_db_edit.clas.abap b/src/ui/db/zcl_abapgit_gui_page_db_edit.clas.abap index cd90baf58..af21527c7 100644 --- a/src/ui/db/zcl_abapgit_gui_page_db_edit.clas.abap +++ b/src/ui/db/zcl_abapgit_gui_page_db_edit.clas.abap @@ -14,6 +14,12 @@ CLASS zcl_abapgit_gui_page_db_edit DEFINITION REDEFINITION . PROTECTED SECTION. + CLASS-METHODS dbcontent_decode + IMPORTING + !it_postdata TYPE cnht_post_data_tab + RETURNING + VALUE(rs_content) TYPE zif_abapgit_persistence=>ty_content . + METHODS render_content REDEFINITION . PRIVATE SECTION. @@ -43,6 +49,34 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION. ENDMETHOD. + METHOD dbcontent_decode. + + DATA: lt_fields TYPE tihttpnvp, + lv_string TYPE string. + + + CONCATENATE LINES OF it_postdata INTO lv_string. + + lv_string = cl_http_utility=>unescape_url( lv_string ). + + rs_content = zcl_abapgit_html_action_utils=>dbkey_decode( lv_string ). + + lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ). + + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'XMLDATA' + it = lt_fields + CHANGING + cv = rs_content-data_str ). + + IF rs_content-data_str(1) <> '<' AND rs_content-data_str+1(1) = '<'. " Hmmm ??? + rs_content-data_str = rs_content-data_str+1. + ENDIF. + + ENDMETHOD. + + METHOD render_content. DATA: lv_data TYPE zif_abapgit_persistence=>ty_content-data_str, @@ -87,7 +121,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION. ro_html->add( '' ). "db_entry - ENDMETHOD. "render_content + ENDMETHOD. METHOD update. @@ -110,7 +144,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB_EDIT IMPLEMENTATION. CASE iv_action. WHEN gc_action-update. - ls_db = zcl_abapgit_html_action_utils=>dbcontent_decode( it_postdata ). + ls_db = dbcontent_decode( it_postdata ). update( ls_db ). ev_state = zif_abapgit_definitions=>gc_event_state-go_back. ENDCASE. diff --git a/src/ui/zcl_abapgit_gui_page_commit.clas.abap b/src/ui/zcl_abapgit_gui_page_commit.clas.abap index 06e1063cf..18cb255aa 100644 --- a/src/ui/zcl_abapgit_gui_page_commit.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_commit.clas.abap @@ -1,25 +1,38 @@ -CLASS zcl_abapgit_gui_page_commit DEFINITION PUBLIC FINAL - CREATE PUBLIC INHERITING FROM zcl_abapgit_gui_page. +CLASS zcl_abapgit_gui_page_commit DEFINITION + PUBLIC + INHERITING FROM zcl_abapgit_gui_page + FINAL + CREATE PUBLIC . PUBLIC SECTION. - CONSTANTS: BEGIN OF c_action, - commit_post TYPE string VALUE 'commit_post', - commit_cancel TYPE string VALUE 'commit_cancel', - END OF c_action. + CONSTANTS: + BEGIN OF c_action, + commit_post TYPE string VALUE 'commit_post', + commit_cancel TYPE string VALUE 'commit_cancel', + END OF c_action . - METHODS: - constructor - IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online - io_stage TYPE REF TO zcl_abapgit_stage - RAISING zcx_abapgit_exception, - zif_abapgit_gui_page~on_event REDEFINITION. + METHODS constructor + IMPORTING + !io_repo TYPE REF TO zcl_abapgit_repo_online + !io_stage TYPE REF TO zcl_abapgit_stage + RAISING + zcx_abapgit_exception . + METHODS zif_abapgit_gui_page~on_event + REDEFINITION . PROTECTED SECTION. - METHODS: - render_content REDEFINITION, - scripts REDEFINITION. + CLASS-METHODS parse_commit_request + IMPORTING + !it_postdata TYPE cnht_post_data_tab + EXPORTING + !es_fields TYPE any . + + METHODS render_content + REDEFINITION . + METHODS scripts + REDEFINITION . PRIVATE SECTION. DATA: mo_repo TYPE REF TO zcl_abapgit_repo_online, mo_stage TYPE REF TO zcl_abapgit_stage. @@ -44,7 +57,7 @@ ENDCLASS. -CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. +CLASS ZCL_ABAPGIT_GUI_PAGE_COMMIT IMPLEMENTATION. METHOD constructor. @@ -57,6 +70,66 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ENDMETHOD. + METHOD parse_commit_request. + + CONSTANTS: lc_replace TYPE string VALUE '<>'. + + DATA: lv_string TYPE string, + lt_fields TYPE tihttpnvp. + + FIELD-SYMBOLS TYPE string. + + CLEAR es_fields. + + CONCATENATE LINES OF it_postdata INTO lv_string. + REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>gc_crlf IN lv_string WITH lc_replace. + REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>gc_newline IN lv_string WITH lc_replace. + lt_fields = zcl_abapgit_html_action_utils=>parse_fields_upper_case_name( lv_string ). + + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'COMMITTER_NAME' + it = lt_fields + CHANGING + cv = es_fields ). + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'COMMITTER_EMAIL' + it = lt_fields + CHANGING + cv = es_fields ). + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'AUTHOR_NAME' + it = lt_fields + CHANGING + cv = es_fields ). + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'AUTHOR_EMAIL' + it = lt_fields + CHANGING + cv = es_fields ). + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'COMMENT' + it = lt_fields + CHANGING + cv = es_fields ). + zcl_abapgit_html_action_utils=>get_field( + EXPORTING + name = 'BODY' + it = lt_fields + CHANGING + cv = es_fields ). + + ASSIGN COMPONENT 'BODY' OF STRUCTURE es_fields TO . + ASSERT IS ASSIGNED. + REPLACE ALL OCCURRENCES OF lc_replace IN WITH zif_abapgit_definitions=>gc_newline. + + ENDMETHOD. + + METHOD render_content. CREATE OBJECT ro_html. @@ -72,7 +145,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ro_html->add( render_stage( ) ). ro_html->add( '' ). - ENDMETHOD. "render_content + ENDMETHOD. METHOD render_form. @@ -160,7 +233,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ro_html->add( '' ). ro_html->add( '' ). - ENDMETHOD. "render_form + ENDMETHOD. METHOD render_menu. @@ -183,7 +256,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ro_html->add( lo_toolbar->render( ) ). ro_html->add( '' ). - ENDMETHOD. "render_menu + ENDMETHOD. METHOD render_stage. @@ -219,7 +292,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ro_html->add( '' ). - ENDMETHOD. "render_stage + ENDMETHOD. METHOD render_text_input. @@ -241,7 +314,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. ro_html->add( || ). ro_html->add( '' ). - ENDMETHOD. " render_text_input + ENDMETHOD. METHOD scripts. @@ -249,7 +322,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( 'setInitialFocus("comment");' ). - ENDMETHOD. "scripts + ENDMETHOD. METHOD zif_abapgit_gui_page~on_event. @@ -259,7 +332,7 @@ CLASS zcl_abapgit_gui_page_commit IMPLEMENTATION. CASE iv_action. WHEN c_action-commit_post. - zcl_abapgit_html_action_utils=>parse_commit_request( + parse_commit_request( EXPORTING it_postdata = it_postdata IMPORTING es_fields = ls_commit ). diff --git a/src/ui/zcl_abapgit_html_action_utils.clas.abap b/src/ui/zcl_abapgit_html_action_utils.clas.abap index b5d34b6b0..0418844bc 100644 --- a/src/ui/zcl_abapgit_html_action_utils.clas.abap +++ b/src/ui/zcl_abapgit_html_action_utils.clas.abap @@ -58,13 +58,13 @@ CLASS zcl_abapgit_html_action_utils DEFINITION CLASS-METHODS file_encode IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !ig_file TYPE any "assuming ty_file + !ig_file TYPE any "assuming ty_file RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS obj_encode IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !ig_object TYPE any "assuming ty_item + !ig_object TYPE any "assuming ty_item RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS file_obj_decode @@ -72,8 +72,8 @@ CLASS zcl_abapgit_html_action_utils DEFINITION !iv_string TYPE clike EXPORTING !ev_key TYPE zif_abapgit_persistence=>ty_repo-key - !eg_file TYPE any "assuming ty_file - !eg_object TYPE any "assuming ty_item + !eg_file TYPE any "assuming ty_file + !eg_object TYPE any "assuming ty_item RAISING zcx_abapgit_exception . CLASS-METHODS dbkey_encode @@ -86,16 +86,6 @@ CLASS zcl_abapgit_html_action_utils DEFINITION !iv_string TYPE clike RETURNING VALUE(rs_key) TYPE zif_abapgit_persistence=>ty_content . - CLASS-METHODS dbcontent_decode - IMPORTING - !it_postdata TYPE cnht_post_data_tab - RETURNING - VALUE(rs_content) TYPE zif_abapgit_persistence=>ty_content . - CLASS-METHODS parse_commit_request - IMPORTING - !it_postdata TYPE cnht_post_data_tab - EXPORTING - !es_fields TYPE any . CLASS-METHODS stage_decode IMPORTING !iv_getdata TYPE clike @@ -140,28 +130,6 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION. ENDMETHOD. "add_field - METHOD dbcontent_decode. - - DATA: lt_fields TYPE tihttpnvp, - lv_string TYPE string. - - - CONCATENATE LINES OF it_postdata INTO lv_string. - - lv_string = cl_http_utility=>unescape_url( lv_string ). - - rs_content = dbkey_decode( lv_string ). - - lt_fields = parse_fields_upper_case_name( lv_string ). - - get_field( EXPORTING name = 'XMLDATA' it = lt_fields CHANGING cv = rs_content-data_str ). - IF rs_content-data_str(1) <> '<' AND rs_content-data_str+1(1) = '<'. " Hmmm ??? - rs_content-data_str = rs_content-data_str+1. - ENDIF. - - ENDMETHOD. "dbcontent_decode - - METHOD dbkey_decode. DATA: lt_fields TYPE tihttpnvp. @@ -318,36 +286,6 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION. ENDMETHOD. "obj_encode - METHOD parse_commit_request. - - CONSTANTS: lc_replace TYPE string VALUE '<>'. - - DATA: lv_string TYPE string, - lt_fields TYPE tihttpnvp. - - FIELD-SYMBOLS TYPE string. - - CLEAR es_fields. - - CONCATENATE LINES OF it_postdata INTO lv_string. - REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>gc_crlf IN lv_string WITH lc_replace. - REPLACE ALL OCCURRENCES OF zif_abapgit_definitions=>gc_newline IN lv_string WITH lc_replace. - lt_fields = parse_fields_upper_case_name( lv_string ). - - get_field( EXPORTING name = 'COMMITTER_NAME' it = lt_fields CHANGING cv = es_fields ). - get_field( EXPORTING name = 'COMMITTER_EMAIL' it = lt_fields CHANGING cv = es_fields ). - get_field( EXPORTING name = 'AUTHOR_NAME' it = lt_fields CHANGING cv = es_fields ). - get_field( EXPORTING name = 'AUTHOR_EMAIL' it = lt_fields CHANGING cv = es_fields ). - get_field( EXPORTING name = 'COMMENT' it = lt_fields CHANGING cv = es_fields ). - get_field( EXPORTING name = 'BODY' it = lt_fields CHANGING cv = es_fields ). - - ASSIGN COMPONENT 'BODY' OF STRUCTURE es_fields TO . - ASSERT IS ASSIGNED. - REPLACE ALL OCCURRENCES OF lc_replace IN WITH zif_abapgit_definitions=>gc_newline. - - ENDMETHOD. "parse_commit_request - - METHOD parse_fields. DATA: lt_substrings TYPE stringtab,