#311 branches part1, interface changes

This commit is contained in:
atsy 2016-09-03 13:04:03 +03:00
parent 41ffa35699
commit 6bb3ed474f
4 changed files with 65 additions and 45 deletions

View File

@ -105,6 +105,31 @@ CLASS lcl_git_utils IMPLEMENTATION.
ENDCLASS. "lcl_git_utils
*----------------------------------------------------------------------*
* CLASS lcl_git_branch_list DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_git_branch_list DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
DATA mt_branches TYPE ty_git_branch_list_tt READ-ONLY.
CLASS-METHODS create
IMPORTING iv_data TYPE string
RETURNING VALUE(ro_list) TYPE REF TO lcl_git_branch_list
RAISING lcx_exception.
METHODS find_by_name
IMPORTING iv_branch_name TYPE clike
RETURNING VALUE(rs_branch) TYPE ty_git_branch
RAISING lcx_exception.
PRIVATE SECTION.
CLASS-METHODS parse_branch_list
IMPORTING iv_data TYPE string
RETURNING VALUE(rt_list) TYPE ty_git_branch_list_tt
RAISING lcx_exception.
ENDCLASS. "lcl_git_branch_list
*----------------------------------------------------------------------*
* CLASS lcl_transport DEFINITION
@ -133,7 +158,7 @@ CLASS lcl_git_transport DEFINITION FINAL.
CLASS-METHODS branches
IMPORTING iv_url TYPE string
RETURNING VALUE(rt_branch_list) TYPE ty_git_branch_list_tt
RETURNING VALUE(ro_branch_list) TYPE REF TO lcl_git_branch_list
RAISING lcx_exception.
CLASS-METHODS class_constructor.
@ -151,7 +176,7 @@ CLASS lcl_git_transport DEFINITION FINAL.
IMPORTING iv_url TYPE string
iv_service TYPE string
EXPORTING ei_client TYPE REF TO if_http_client
et_branch_list TYPE ty_git_branch_list_tt
eo_branch_list TYPE REF TO lcl_git_branch_list
RAISING lcx_exception.
CLASS-METHODS find_branch
@ -193,20 +218,6 @@ CLASS lcl_git_transport DEFINITION FINAL.
ENDCLASS. "lcl_transport DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_git_branch_helper DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_git_branch_helper DEFINITION FINAL.
PUBLIC SECTION.
CLASS-METHODS parse_branch_list
IMPORTING iv_data TYPE string
RETURNING VALUE(rt_list) TYPE ty_git_branch_list_tt
RAISING lcx_exception.
ENDCLASS. "lcl_git_branch_helper
*----------------------------------------------------------------------*
* CLASS lcl_pack DEFINITION
*----------------------------------------------------------------------*
@ -407,9 +418,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
METHOD find_branch.
DATA: lt_branch_list TYPE ty_git_branch_list_tt,
ls_branch_list LIKE LINE OF lt_branch_list.
DATA: lo_branch_list TYPE REF TO lcl_git_branch_list.
branch_list(
EXPORTING
@ -417,20 +426,10 @@ CLASS lcl_git_transport IMPLEMENTATION.
iv_service = iv_service
IMPORTING
ei_client = ei_client
et_branch_list = lt_branch_list ).
eo_branch_list = lo_branch_list ).
IF ev_branch IS SUPPLIED.
IF iv_branch_name IS INITIAL.
lcx_exception=>raise( 'branch empty' ).
ENDIF.
READ TABLE lt_branch_list INTO ls_branch_list
WITH KEY name = iv_branch_name.
IF sy-subrc <> 0.
lcx_exception=>raise( 'Branch not found' ).
ENDIF.
ev_branch = ls_branch_list-sha1.
ev_branch = lo_branch_list->find_by_name( iv_branch_name )-sha1.
ENDIF.
ENDMETHOD. "find_branch
@ -446,7 +445,7 @@ CLASS lcl_git_transport IMPLEMENTATION.
iv_service = c_service-upload
IMPORTING
ei_client = li_client
et_branch_list = rt_branch_list ).
eo_branch_list = ro_branch_list ).
li_client->close( ).
ENDMETHOD. "branches
@ -499,9 +498,9 @@ CLASS lcl_git_transport IMPLEMENTATION.
ii_client = ei_client ).
lv_data = ei_client->response->get_cdata( ).
et_branch_list = lcl_git_branch_helper=>parse_branch_list( lv_data ).
eo_branch_list = lcl_git_branch_list=>create( lv_data ).
ENDMETHOD. "ref_discovery
ENDMETHOD. "branch_list
METHOD send_receive.
@ -707,9 +706,29 @@ CLASS lcl_git_transport IMPLEMENTATION.
ENDCLASS. "lcl_transport IMPLEMENTATION
*----------------------------------------------------------------------*
* CLASS lcl_git_branch_helper IMPLEMENTATION
* CLASS lcl_git_branch_list IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_git_branch_helper IMPLEMENTATION.
CLASS lcl_git_branch_list IMPLEMENTATION.
METHOD create.
CREATE OBJECT ro_list.
ro_list->mt_branches = parse_branch_list( iv_data = iv_data ).
ENDMETHOD. "create
METHOD find_by_name.
IF iv_branch_name IS INITIAL.
lcx_exception=>raise( 'Branch name empty' ).
ENDIF.
READ TABLE mt_branches INTO rs_branch
WITH KEY name = iv_branch_name.
IF sy-subrc <> 0.
lcx_exception=>raise( 'Branch not found' ).
ENDIF.
ENDMETHOD. "find_by_name
METHOD parse_branch_list.
@ -753,7 +772,7 @@ CLASS lcl_git_branch_helper IMPLEMENTATION.
ENDMETHOD. "parse_branch_list
ENDCLASS. "lcl_git_branch_helper
ENDCLASS. "lcl_git_branch_list

View File

@ -161,7 +161,8 @@ CLASS lcl_branch_overview IMPLEMENTATION.
* get objects directly from git, mo_repo only contains a shallow clone of only
* the selected branch
gt_branches = lcl_git_transport=>branches( io_repo->get_url( ) ).
"TODO refactor
gt_branches = lcl_git_transport=>branches( io_repo->get_url( ) )->mt_branches.
DELETE gt_branches WHERE name = 'refs/heads/gh-pages' ##NO_TEXT.
DELETE gt_branches WHERE name CP 'refs/tags/*' ##NO_TEXT.

View File

@ -308,7 +308,8 @@ CLASS lcl_merge IMPLEMENTATION.
lt_upload TYPE ty_git_branch_list_tt.
lt_branches = lcl_git_transport=>branches( gs_merge-repo->get_url( ) ).
"TODO refactor
lt_branches = lcl_git_transport=>branches( gs_merge-repo->get_url( ) )->mt_branches.
_find iv_source gs_merge-source.
_find iv_target gs_merge-target.

View File

@ -220,17 +220,17 @@ CLASS lcl_popups IMPLEMENTATION.
METHOD branch_list_popup.
DATA: lt_branches TYPE ty_git_branch_list_tt,
DATA: lo_branches TYPE REF TO lcl_git_branch_list,
lv_answer TYPE c LENGTH 1,
lt_selection TYPE TABLE OF spopli.
FIELD-SYMBOLS: <ls_sel> LIKE LINE OF lt_selection,
<ls_branch> LIKE LINE OF lt_branches.
<ls_branch> LIKE LINE OF lcl_git_branch_list=>mt_branches.
lt_branches = lcl_git_transport=>branches( iv_url ).
lo_branches = lcl_git_transport=>branches( iv_url ).
LOOP AT lt_branches ASSIGNING <ls_branch>.
LOOP AT lo_branches->mt_branches ASSIGNING <ls_branch>.
APPEND INITIAL LINE TO lt_selection ASSIGNING <ls_sel>.
<ls_sel>-varoption = <ls_branch>-name.
ENDLOOP.
@ -261,8 +261,7 @@ CLASS lcl_popups IMPLEMENTATION.
READ TABLE lt_selection ASSIGNING <ls_sel> WITH KEY selflag = abap_true.
ASSERT sy-subrc = 0.
READ TABLE lt_branches INTO rs_branch WITH KEY name = <ls_sel>-varoption.
ASSERT sy-subrc = 0.
rs_branch = lo_branches->find_by_name( <ls_sel>-varoption ).
ENDMETHOD.