diff --git a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap index 41726cda8..fa1349676 100644 --- a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap @@ -24,13 +24,6 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC render_content REDEFINITION. PRIVATE SECTION. - CONSTANTS: - BEGIN OF c_actions, - stage TYPE string VALUE 'stage' ##NO_TEXT, - commit TYPE string VALUE 'commit' ##NO_TEXT, - rerun TYPE string VALUE 'rerun' ##NO_TEXT, - END OF c_actions. - DATA: mo_stage TYPE REF TO zcl_abapgit_stage, mv_check_variant TYPE sci_chkv. @@ -63,7 +56,6 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC determine_check_variant RAISING zcx_abapgit_exception. - ENDCLASS. @@ -109,11 +101,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODE_INSP IMPLEMENTATION. DATA: lv_opt TYPE c LENGTH 1. - CREATE OBJECT ro_menu. - - ro_menu->add( iv_txt = 'Re-Run' - iv_act = c_actions-rerun - iv_cur = abap_false ) ##NO_TEXT. + ro_menu = build_base_menu( ). IF is_stage_allowed( ) = abap_false. lv_opt = zif_abapgit_html=>c_html_opt-crossout. diff --git a/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap b/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap index 6dc4ef676..7865c3d37 100644 --- a/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap @@ -6,6 +6,16 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION PUBLIC ABSTRACT INHERITING FROM PROTECTED SECTION. + CONSTANTS: + BEGIN OF c_actions, + rerun TYPE string VALUE 'rerun' ##NO_TEXT, + sort_1 TYPE string VALUE 'sort_1' ##NO_TEXT, + sort_2 TYPE string VALUE 'sort_2' ##NO_TEXT, + sort_3 TYPE string VALUE 'sort_3' ##NO_TEXT, + stage TYPE string VALUE 'stage' ##NO_TEXT, + commit TYPE string VALUE 'commit' ##NO_TEXT, + END OF c_actions. + DATA mo_repo TYPE REF TO zcl_abapgit_repo . DATA mt_result TYPE scit_alvlist . @@ -19,9 +29,9 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION PUBLIC ABSTRACT INHERITING FROM !is_result TYPE scir_alvlist . METHODS build_nav_link IMPORTING - !is_result TYPE scir_alvlist + !is_result TYPE scir_alvlist RETURNING - VALUE(rv_link) TYPE string. + VALUE(rv_link) TYPE string . METHODS jump IMPORTING !is_item TYPE zif_abapgit_definitions=>ty_item @@ -29,10 +39,12 @@ CLASS zcl_abapgit_gui_page_codi_base DEFINITION PUBLIC ABSTRACT INHERITING FROM !iv_line_number TYPE i RAISING zcx_abapgit_exception . + METHODS build_base_menu + RETURNING + VALUE(ro_menu) TYPE REF TO zcl_abapgit_html_toolbar . PRIVATE SECTION. CONSTANTS c_object_separator TYPE char1 VALUE '|'. CONSTANTS c_ci_sig TYPE string VALUE 'cinav:'. - ENDCLASS. @@ -40,6 +52,35 @@ ENDCLASS. CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION. + METHOD build_base_menu. + + DATA: + lo_sort_menu TYPE REF TO zcl_abapgit_html_toolbar. + + CREATE OBJECT lo_sort_menu. + + lo_sort_menu->add( + iv_txt = 'By Object, Check, Sub-object' + iv_act = c_actions-sort_1 + )->add( + iv_txt = 'By Object, Sub-object, Line' + iv_act = c_actions-sort_2 + )->add( + iv_txt = 'By Check, Object, Sub-object' + iv_act = c_actions-sort_3 ). + + CREATE OBJECT ro_menu. + + ro_menu->add( iv_txt = 'Sort' + io_sub = lo_sort_menu ) ##NO_TEXT. + + ro_menu->add( iv_txt = 'Re-Run' + iv_act = c_actions-rerun + iv_cur = abap_false ) ##NO_TEXT. + + ENDMETHOD. + + METHOD build_nav_link. rv_link = |{ c_ci_sig }| && @@ -52,13 +93,13 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION. METHOD jump. - DATA: lo_test TYPE REF TO cl_ci_test_root, - ls_info TYPE scir_rest, - lo_result TYPE REF TO cl_ci_result_root, - lv_adt_jump_enabled TYPE abap_bool, - lv_line_number TYPE i, - ls_item TYPE zif_abapgit_definitions=>ty_item, - ls_sub_item TYPE zif_abapgit_definitions=>ty_item. + DATA: lo_test TYPE REF TO cl_ci_test_root, + ls_info TYPE scir_rest, + lo_result TYPE REF TO cl_ci_result_root, + lv_adt_jump_enabled TYPE abap_bool, + lv_line_number TYPE i, + ls_item TYPE zif_abapgit_definitions=>ty_item, + ls_sub_item TYPE zif_abapgit_definitions=>ty_item. FIELD-SYMBOLS: TYPE scir_alvlist. @@ -152,7 +193,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION. DATA: lv_class TYPE string, lv_obj_txt TYPE string, - lv_msg TYPE string. + lv_msg TYPE string, + ls_mtdkey TYPE seocpdkey. CASE is_result-kind. WHEN 'E'. @@ -170,7 +212,26 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION. ( is_result-sobjname = is_result-objname AND is_result-sobjtype = is_result-sobjtype ). lv_obj_txt = |{ is_result-objtype } { is_result-objname }|. - ELSE. + ELSEIF is_result-objtype = 'CLAS'. + TRY. + CASE is_result-sobjname+30(*). + WHEN seop_incextapp_definition. + lv_obj_txt = |{ is_result-objname } : Local Definitions|. + WHEN seop_incextapp_implementation. + lv_obj_txt = |{ is_result-objname } : Local Implementations|. + WHEN seop_incextapp_macros. + lv_obj_txt = |{ is_result-objname } : Macros|. + WHEN seop_incextapp_testclasses. + lv_obj_txt = |{ is_result-objname } : Test Classes|. + WHEN OTHERS. + ls_mtdkey = cl_oo_classname_service=>get_method_by_include( is_result-sobjname ). + lv_obj_txt = |{ ls_mtdkey-clsname }->{ ls_mtdkey-cpdname }|. + ENDCASE. + CATCH cx_root. + lv_obj_txt = ''. "use default below + ENDTRY. + ENDIF. + IF lv_obj_txt IS INITIAL. lv_obj_txt = |{ is_result-objtype } { is_result-objname } > { is_result-sobjtype } { is_result-sobjname }|. ENDIF. lv_obj_txt = |{ lv_obj_txt } [ @{ zcl_abapgit_convert=>alpha_output( is_result-line ) } ]|. @@ -220,5 +281,22 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_CODI_BASE IMPLEMENTATION. ENDIF. + CASE iv_action. + + WHEN c_actions-sort_1. + SORT mt_result BY objtype objname test code sobjtype sobjname line col. + ei_page = me. + ev_state = zcl_abapgit_gui=>c_event_state-re_render. + WHEN c_actions-sort_2. + SORT mt_result BY objtype objname sobjtype sobjname line col test code. + ei_page = me. + ev_state = zcl_abapgit_gui=>c_event_state-re_render. + WHEN c_actions-sort_3. + SORT mt_result BY test code objtype objname sobjtype sobjname line col. + ei_page = me. + ev_state = zcl_abapgit_gui=>c_event_state-re_render. + + ENDCASE. + ENDMETHOD. ENDCLASS. diff --git a/src/ui/zcl_abapgit_gui_page_syntax.clas.abap b/src/ui/zcl_abapgit_gui_page_syntax.clas.abap index b82b70a2e..aaf98eaf2 100644 --- a/src/ui/zcl_abapgit_gui_page_syntax.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_syntax.clas.abap @@ -22,11 +22,6 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION PUBLIC FINAL CREATE PUBLIC render_content REDEFINITION. PRIVATE SECTION. - CONSTANTS: - BEGIN OF c_actions, - rerun TYPE string VALUE 'rerun' ##NO_TEXT, - END OF c_actions. - METHODS: build_menu RETURNING @@ -37,7 +32,6 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION PUBLIC FINAL CREATE PUBLIC run_syntax_check RAISING zcx_abapgit_exception. - ENDCLASS. @@ -47,11 +41,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SYNTAX IMPLEMENTATION. METHOD build_menu. - CREATE OBJECT ro_menu. - - ro_menu->add( iv_txt = 'Re-Run' - iv_act = c_actions-rerun - iv_cur = abap_false ) ##NO_TEXT. + ro_menu = build_base_menu( ). ENDMETHOD. diff --git a/src/zcl_abapgit_code_inspector.clas.abap b/src/zcl_abapgit_code_inspector.clas.abap index 4d9fee0cd..8a78ccc0e 100644 --- a/src/zcl_abapgit_code_inspector.clas.abap +++ b/src/zcl_abapgit_code_inspector.clas.abap @@ -82,7 +82,7 @@ ENDCLASS. -CLASS zcl_abapgit_code_inspector IMPLEMENTATION. +CLASS ZCL_ABAPGIT_CODE_INSPECTOR IMPLEMENTATION. METHOD cleanup. @@ -177,6 +177,7 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. DATA: lt_objs TYPE scit_objs, ls_obj TYPE scir_objs, lt_objs_check TYPE scit_objs, + ls_item TYPE zif_abapgit_definitions=>ty_item, lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt. lt_packages = zcl_abapgit_factory=>get_sap_package( mv_package )->list_subpackages( ). @@ -196,6 +197,13 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. CONTINUE. ENDIF. + ls_item-obj_type = ls_obj-objtype. + ls_item-obj_name = ls_obj-objname. + + IF zcl_abapgit_objects=>exists( ls_item ) = abap_false. + CONTINUE. + ENDIF. + INSERT ls_obj INTO TABLE lt_objs_check. ENDLOOP. @@ -207,28 +215,6 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. ENDMETHOD. - METHOD skip_object. - - DATA: ls_trdir TYPE trdir. - - CASE is_obj-objtype. - WHEN 'PROG'. - - SELECT SINGLE * - INTO ls_trdir - FROM trdir - WHERE name = is_obj-objname. - - rv_skip = boolc( ls_trdir-subc = 'I' ). " Include program. - - WHEN OTHERS. - rv_skip = abap_false. - - ENDCASE. - - ENDMETHOD. - - METHOD create_variant. IF iv_variant IS INITIAL. @@ -256,6 +242,23 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. ENDMETHOD. + METHOD decide_run_mode. + + DATA: lo_settings TYPE REF TO zcl_abapgit_settings. + lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ). + + IF sy-batch = abap_true. + " We have to disable parallelization in batch because of lock errors. + rv_run_mode = co_run_mode-run_via_rfc. + ELSEIF lo_settings->get_parallel_proc_disabled( ) = abap_false. + rv_run_mode = co_run_mode-run_loc_parallel. + ELSE. + rv_run_mode = co_run_mode-run_via_rfc. + ENDIF. + + ENDMETHOD. + + METHOD run_inspection. io_inspection->run( @@ -271,6 +274,32 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. io_inspection->plain_list( IMPORTING p_list = rt_list ). + SORT rt_list BY objtype objname test code sobjtype sobjname line col. + + DELETE ADJACENT DUPLICATES FROM rt_list. + + ENDMETHOD. + + + METHOD skip_object. + + DATA: ls_trdir TYPE trdir. + + CASE is_obj-objtype. + WHEN 'PROG'. + + SELECT SINGLE * + INTO ls_trdir + FROM trdir + WHERE name = is_obj-objname. + + rv_skip = boolc( ls_trdir-subc = 'I' ). " Include program. + + WHEN OTHERS. + rv_skip = abap_false. + + ENDCASE. + ENDMETHOD. @@ -339,21 +368,4 @@ CLASS zcl_abapgit_code_inspector IMPLEMENTATION. ENDTRY. ENDMETHOD. - - METHOD decide_run_mode. - - DATA: lo_settings TYPE REF TO zcl_abapgit_settings. - lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ). - - IF sy-batch = abap_true. - " We have to disable parallelization in batch because of lock errors. - rv_run_mode = co_run_mode-run_via_rfc. - ELSEIF lo_settings->get_parallel_proc_disabled( ) = abap_false. - rv_run_mode = co_run_mode-run_loc_parallel. - ELSE. - rv_run_mode = co_run_mode-run_via_rfc. - ENDIF. - - ENDMETHOD. - ENDCLASS.