Merge pull request #363 from sbcgua/master

git_services-commit, #348
This commit is contained in:
Lars Hvam 2016-09-29 16:15:10 +02:00 committed by GitHub
commit 0d2a516171
6 changed files with 133 additions and 94 deletions

View File

@ -151,17 +151,22 @@ CONSTANTS: BEGIN OF gc_action,
repo_remote_attach TYPE string VALUE 'repo_remote_attach',
repo_remote_detach TYPE string VALUE 'repo_remote_detach',
repo_remote_change TYPE string VALUE 'repo_remote_change',
abapgit_home TYPE string VALUE 'abapgit_home',
abapgit_install TYPE string VALUE 'abapgit_install',
zip_import TYPE string VALUE 'zip_import',
zip_export TYPE string VALUE 'zip_export',
zip_package TYPE string VALUE 'zip_package',
zip_transport TYPE string VALUE 'zip_transport',
git_pull TYPE string VALUE 'git_pull',
git_reset TYPE string VALUE 'git_reset',
git_branch_create TYPE string VALUE 'git_branch_create',
git_branch_switch TYPE string VALUE 'git_branch_switch',
git_branch_delete TYPE string VALUE 'git_branch_delete',
git_commit TYPE string VALUE 'git_commit',
db_delete TYPE string VALUE 'db_delete',
db_update TYPE string VALUE 'db_update',
db_display TYPE string VALUE 'db_display',

View File

@ -28,7 +28,7 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
END OF ty_page_stack.
DATA: mi_cur_page TYPE REF TO lif_gui_page,
mt_stack TYPE TABLE OF ty_page_stack,
mt_stack TYPE STANDARD TABLE OF ty_page_stack,
mt_assets TYPE tt_w3urls,
mo_router TYPE REF TO lcl_gui_router,
mo_html_viewer TYPE REF TO cl_gui_html_viewer.
@ -59,6 +59,13 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
iv_replacing TYPE abap_bool DEFAULT abap_false
RAISING lcx_exception.
METHODS handle_action
IMPORTING action TYPE c
frame TYPE c OPTIONAL
getdata TYPE c OPTIONAL
postdata TYPE cnht_post_data_tab OPTIONAL
query_table TYPE cnht_query_table OPTIONAL.
ENDCLASS. "lcl_gui DEFINITION
*----------------------------------------------------------------------*
@ -72,7 +79,7 @@ CLASS lcl_gui IMPLEMENTATION.
ENDMETHOD. "constructor
METHOD on_event.
METHOD handle_action.
DATA: lx_exception TYPE REF TO lcx_exception,
li_page TYPE REF TO lif_gui_page,
@ -129,6 +136,17 @@ CLASS lcl_gui IMPLEMENTATION.
" Do nothing = gc_event_state-no_more_act
ENDTRY.
ENDMETHOD. "handle_action
METHOD on_event.
handle_action(
action = action
frame = frame
getdata = getdata
postdata = postdata
query_table = query_table ).
ENDMETHOD. "on_event
METHOD back.

View File

@ -129,6 +129,9 @@ CLASS lcl_gui_router IMPLEMENTATION.
ev_state = gc_event_state-re_render.
" Repository services actions
WHEN gc_action-repo_newoffline. " New offline repo
lcl_services_repo=>new_offline( ).
ev_state = gc_event_state-re_render.
WHEN gc_action-repo_refresh. " Repo refresh
lcl_services_repo=>refresh( lv_key ).
ev_state = gc_event_state-re_render.
@ -177,6 +180,12 @@ CLASS lcl_gui_router IMPLEMENTATION.
WHEN gc_action-git_branch_create. " GIT Create new branch
lcl_services_git=>create_branch( lv_key ).
ev_state = gc_event_state-re_render.
WHEN gc_action-git_branch_delete. " Delete remote branch
lcl_services_git=>delete_branch( lv_key ).
ev_state = gc_event_state-re_render.
WHEN gc_action-git_branch_switch. " Switch branch
lcl_services_git=>switch_branch( lv_key ).
ev_state = gc_event_state-re_render.
"Others
WHEN OTHERS.

View File

@ -6,13 +6,10 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
TYPES: BEGIN OF ty_commit_fields,
repo_key TYPE lcl_persistence_repo=>ty_repo-key,
username TYPE string,
email TYPE string,
comment TYPE string,
body TYPE string,
END OF ty_commit_fields.
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
@ -38,10 +35,7 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
styles
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
scripts
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
commit_push
IMPORTING it_postdata TYPE cnht_post_data_tab
RAISING lcx_exception.
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
ENDCLASS.
@ -54,6 +48,50 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
mo_stage = io_stage.
ENDMETHOD.
METHOD lif_gui_page~on_event.
DATA: ls_commit TYPE lcl_services_git=>ty_commit_fields.
CASE iv_action.
WHEN c_action-commit_post.
lcl_html_action_utils=>parse_commit_request( EXPORTING it_postdata = it_postdata
IMPORTING es_fields = ls_commit ).
lcl_services_git=>commit( is_commit = ls_commit
io_repo = mo_repo
io_stage = mo_stage ).
ev_state = gc_event_state-go_back_to_bookmark.
WHEN c_action-commit_cancel.
ev_state = gc_event_state-go_back.
ENDCASE.
ENDMETHOD.
METHOD lif_gui_page~render.
CREATE OBJECT ro_html.
ro_html->add( header( io_include_style = styles( ) ) ).
ro_html->add( title( 'COMMIT' ) ).
ro_html->add( '<div class="repo">' ).
ro_html->add( render_repo_top(
io_repo = mo_repo
iv_show_package = abap_false
iv_branch = mo_stage->get_branch_name( ) ) ).
ro_html->add( render_menu( ) ).
ro_html->add( render_form( ) ).
ro_html->add( render_stage( ) ).
ro_html->add( '</div>' ).
ro_html->add( footer( io_include_script = scripts( ) ) ).
ENDMETHOD. "lif_gui_page~render
METHOD render_stage.
DATA: lt_stage TYPE lcl_stage=>ty_stage_tt.
@ -177,40 +215,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
ENDMETHOD. "render_menu
METHOD lif_gui_page~on_event.
CASE iv_action.
WHEN 'commit_post'.
commit_push( it_postdata ).
ev_state = gc_event_state-go_back_to_bookmark.
WHEN 'commit_cancel'.
ev_state = gc_event_state-go_back.
ENDCASE.
ENDMETHOD.
METHOD lif_gui_page~render.
CREATE OBJECT ro_html.
ro_html->add( header( io_include_style = styles( ) ) ).
ro_html->add( title( 'COMMIT' ) ).
ro_html->add( '<div class="repo">' ).
ro_html->add( render_repo_top(
io_repo = mo_repo
iv_show_package = abap_false
iv_branch = mo_stage->get_branch_name( ) ) ).
ro_html->add( render_menu( ) ).
ro_html->add( render_form( ) ).
ro_html->add( render_stage( ) ).
ro_html->add( '</div>' ).
ro_html->add( footer( io_include_script = scripts( ) ) ).
ENDMETHOD. "lif_gui_page~render
METHOD styles.
CREATE OBJECT ro_html.
@ -252,44 +256,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
ENDMETHOD. "styles
METHOD commit_push.
DATA: ls_fields TYPE ty_commit_fields,
ls_comment TYPE ty_comment,
lo_user TYPE REF TO lcl_persistence_user.
lcl_html_action_utils=>parse_commit_request( EXPORTING it_postdata = it_postdata
IMPORTING es_fields = ls_fields ).
lo_user = lcl_app=>user( ).
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' ).
ELSEIF ls_fields-email IS INITIAL.
lcx_exception=>raise( 'empty email' ).
ELSEIF ls_fields-comment IS INITIAL.
lcx_exception=>raise( 'empty comment' ).
ENDIF.
ls_comment-username = ls_fields-username.
ls_comment-email = ls_fields-email.
ls_comment-comment = ls_fields-comment.
IF NOT ls_fields-body IS INITIAL.
CONCATENATE ls_comment-comment gc_newline ls_fields-body
INTO ls_comment-comment.
ENDIF.
mo_repo->push( is_comment = ls_comment
io_stage = mo_stage ).
COMMIT WORK.
ENDMETHOD. "commit_push
METHOD scripts.
CREATE OBJECT ro_html.

View File

@ -96,15 +96,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
lv_key = iv_getdata.
CASE iv_action.
WHEN gc_action-repo_newoffline. " New offline repo
lcl_services_repo=>new_offline( ).
ev_state = gc_event_state-re_render.
WHEN gc_action-git_branch_delete. " Delete remote branch
lcl_services_git=>delete_branch( lv_key ).
ev_state = gc_event_state-re_render.
WHEN gc_action-git_branch_switch. " Switch branch
lcl_services_git=>switch_branch( lv_key ).
ev_state = gc_event_state-re_render.
WHEN c_actions-show. " Change displayed repo
lcl_app=>user( )->set_repo_show( lv_key ).
ev_state = gc_event_state-re_render.

View File

@ -4,6 +4,15 @@
CLASS lcl_services_git DEFINITION FINAL.
PUBLIC SECTION.
TYPES: BEGIN OF ty_commit_fields,
repo_key TYPE lcl_persistence_repo=>ty_repo-key,
username TYPE string,
email TYPE string,
comment TYPE string,
body TYPE string,
END OF ty_commit_fields.
CLASS-METHODS pull
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception lcx_cancel.
@ -24,6 +33,12 @@ CLASS lcl_services_git DEFINITION FINAL.
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
RAISING lcx_exception lcx_cancel.
CLASS-METHODS commit
IMPORTING io_repo TYPE REF TO lcl_repo_online
is_commit TYPE ty_commit_fields
io_stage TYPE REF TO lcl_stage
RAISING lcx_exception lcx_cancel.
ENDCLASS. " lcl_services_git
CLASS lcl_services_git IMPLEMENTATION.
@ -163,4 +178,39 @@ CLASS lcl_services_git IMPLEMENTATION.
ENDMETHOD. "delete_branch
METHOD commit.
DATA: ls_comment TYPE ty_comment,
lo_user TYPE REF TO lcl_persistence_user.
lo_user = lcl_app=>user( ).
lo_user->set_repo_username( iv_url = io_repo->get_url( )
iv_username = is_commit-username ).
lo_user->set_repo_email( iv_url = io_repo->get_url( )
iv_email = is_commit-email ).
IF is_commit-username IS INITIAL.
lcx_exception=>raise( 'Commit: empty username' ).
ELSEIF is_commit-email IS INITIAL.
lcx_exception=>raise( 'Commit: empty email' ).
ELSEIF is_commit-comment IS INITIAL.
lcx_exception=>raise( 'Commit: empty comment' ).
ENDIF.
ls_comment-username = is_commit-username.
ls_comment-email = is_commit-email.
ls_comment-comment = is_commit-comment.
IF NOT is_commit-body IS INITIAL.
CONCATENATE ls_comment-comment is_commit-body
INTO ls_comment-comment SEPARATED BY gc_newline.
ENDIF.
io_repo->push( is_comment = ls_comment
io_stage = io_stage ).
COMMIT WORK.
ENDMETHOD. "commit
ENDCLASS. " lcl_services_git