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 37ad7ecca..4c1748f4d 100644 --- a/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_code_insp.clas.abap @@ -1,5 +1,5 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC - INHERITING FROM zcl_abapgit_gui_page. + INHERITING FROM zcl_abapgit_gui_page_codi_base. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_page_hotkey. @@ -19,10 +19,9 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC REDEFINITION. PROTECTED SECTION. - DATA: mo_repo TYPE REF TO zcl_abapgit_repo. METHODS: - render_content REDEFINITION. + render_content REDEFINITION. PRIVATE SECTION. CONSTANTS: @@ -31,10 +30,7 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC commit TYPE string VALUE 'commit' ##NO_TEXT, rerun TYPE string VALUE 'rerun' ##NO_TEXT, END OF c_actions. - CONSTANTS: c_object_separator type char1 VALUE '|'. - DATA: - mt_result TYPE scit_alvlist, mo_stage TYPE REF TO zcl_abapgit_stage. METHODS: @@ -54,14 +50,7 @@ CLASS zcl_abapgit_gui_page_code_insp DEFINITION PUBLIC FINAL CREATE PUBLIC is_stage_allowed RETURNING - VALUE(rv_is_stage_allowed) TYPE abap_bool, - jump - IMPORTING - is_item TYPE zif_abapgit_definitions=>ty_item - is_sub_item TYPE zif_abapgit_definitions=>ty_item - i_line_number type i - RAISING - zcx_abapgit_exception. + VALUE(rv_is_stage_allowed) TYPE abap_bool. ENDCLASS. @@ -135,88 +124,6 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION. ENDMETHOD. - - METHOD jump. - - DATA: lo_test TYPE REF TO cl_ci_test_root, - li_code_inspector TYPE REF TO zif_abapgit_code_inspector, - ls_info TYPE scir_rest, - lo_result TYPE REF TO cl_ci_result_root, - lv_check_variant_name TYPE sci_chkv, - lv_package TYPE devclass. - DATA: lv_adt_jump_enabled TYPE abap_bool. - DATA: lv_line_number TYPE i. - DATA: ls_item TYPE zif_abapgit_definitions=>ty_item. - DATA: ls_sub_item TYPE zif_abapgit_definitions=>ty_item. - - FIELD-SYMBOLS: TYPE scir_alvlist. - - IF is_sub_item IS NOT INITIAL. - READ TABLE mt_result WITH KEY objtype = is_item-obj_type - objname = is_item-obj_name - sobjtype = is_sub_item-obj_type - sobjname = is_sub_item-obj_name - line = i_line_number - ASSIGNING . - ELSE. - READ TABLE mt_result WITH KEY objtype = is_item-obj_type - objname = is_item-obj_name - line = i_line_number - ASSIGNING . - ENDIF. - ASSERT IS ASSIGNED. - ls_item-obj_name = -objname. - ls_item-obj_type = -objtype. - - ls_sub_item-obj_name = -sobjname. - ls_sub_item-obj_type = -sobjtype. - - lv_package = mo_repo->get_package( ). - lv_check_variant_name = mo_repo->get_local_settings( )-code_inspector_check_variant. - - li_code_inspector = zcl_abapgit_factory=>get_code_inspector( - iv_package = lv_package - iv_check_variant_name = lv_check_variant_name ). - - " see SCI_LCL_DYNP_530 / HANDLE_DOUBLE_CLICK - - lv_adt_jump_enabled = zcl_abapgit_persist_settings=>get_instance( )->read( )->get_adt_jump_enabled( ). - - TRY. - IF lv_adt_jump_enabled = abap_true. - - lv_line_number = -line. - - zcl_abapgit_objects_super=>jump_adt( i_obj_name = ls_item-obj_name - i_obj_type = ls_item-obj_type - i_sub_obj_name = ls_sub_item-obj_name - i_sub_obj_type = ls_sub_item-obj_type - i_line_number = lv_line_number ). - RETURN. - - ENDIF. - CATCH zcx_abapgit_exception. - ENDTRY. - - TRY. - lo_test ?= cl_ci_tests=>get_test_ref( -test ). - - CATCH cx_root. - zcx_abapgit_exception=>raise( |Jump to object not supported in your NW release| ). - ENDTRY. - - lo_result = lo_test->get_result_node( -kind ). - - - MOVE-CORRESPONDING TO ls_info. - - lo_result->set_info( ls_info ). - lo_result->if_ci_test~navigate( ). - - - ENDMETHOD. - - METHOD render_content. DATA: lv_check_variant TYPE sci_chkv, @@ -246,50 +153,13 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION. ro_html->add( |
| ). LOOP AT mt_result ASSIGNING . - - ro_html->add( '
' ). - IF -sobjname IS INITIAL or - ( -sobjname = -objname and - -sobjtype = -sobjtype ). - ro_html->add_a( iv_txt = |{ -objtype } { -objname }| - iv_act = |{ -objtype }{ -objname }| && - |{ c_object_separator }{ c_object_separator }{ -line }| - iv_typ = zif_abapgit_definitions=>c_action_type-sapevent ). - - ELSE. - ro_html->add_a( iv_txt = |{ -objtype } { -objname }| && - | < { -sobjtype } { -sobjname }| - iv_act = |{ -objtype }{ -objname }| && - |{ c_object_separator }{ -sobjtype }{ -sobjname }| && - |{ c_object_separator }{ -line }| - iv_typ = zif_abapgit_definitions=>c_action_type-sapevent ). - - ENDIF. - ro_html->add( '
' ). - - CASE -kind. - WHEN 'E'. - lv_class = 'error'. - WHEN 'W'. - lv_class = 'warning'. - WHEN OTHERS. - lv_class = 'grey'. - ENDCASE. - - CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' - EXPORTING - input = -line - IMPORTING - output = lv_line. - - ro_html->add( |
Line { lv_line }: { -text }

| ). + render_result( ro_html = ro_html iv_result = ). ENDLOOP. ro_html->add( '' ). ENDMETHOD. "render_content - METHOD run_code_inspector. mt_result = mo_repo->run_code_inspector( ). @@ -315,7 +185,6 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION. METHOD zif_abapgit_gui_page~on_event. - DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, ls_item TYPE zif_abapgit_definitions=>ty_item, ls_sub_item TYPE zif_abapgit_definitions=>ty_item. @@ -324,7 +193,6 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION. DATA: lv_line_number_s TYPE string. DATA: lv_line_number TYPE i. - CASE iv_action. WHEN c_actions-stage. @@ -371,28 +239,16 @@ CLASS zcl_abapgit_gui_page_code_insp IMPLEMENTATION. ei_page = me. ev_state = zif_abapgit_definitions=>c_event_state-re_render. - - WHEN zif_abapgit_definitions=>c_action-abapgit_home. - RETURN. - WHEN OTHERS. - SPLIT iv_action AT c_object_separator INTO lv_main_object lv_sub_object lv_line_number_s. - ls_item-obj_type = lv_main_object(4). - ls_item-obj_name = lv_main_object+4(*). - - IF lv_sub_object IS NOT INITIAL. - ls_sub_item-obj_type = lv_sub_object(4). - ls_sub_item-obj_name = lv_sub_object+4(*). - ENDIF. - - lv_line_number = lv_line_number_s. - - jump( is_item = ls_item - is_sub_item = ls_sub_item - i_line_number = lv_line_number ). - - ev_state = zif_abapgit_definitions=>c_event_state-no_more_act. - + super->zif_abapgit_gui_page~on_event( + EXPORTING + iv_action = iv_action + iv_prev_page = iv_prev_page + iv_getdata = iv_getdata + it_postdata = it_postdata + IMPORTING + ei_page = ei_page + ev_state = ev_state ). ENDCASE. ENDMETHOD. diff --git a/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap b/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap new file mode 100644 index 000000000..6890ddf3d --- /dev/null +++ b/src/ui/zcl_abapgit_gui_page_codi_base.clas.abap @@ -0,0 +1,188 @@ +CLASS zcl_abapgit_gui_page_codi_base DEFINITION PUBLIC ABSTRACT INHERITING FROM zcl_abapgit_gui_page. + PUBLIC SECTION. + METHODS: + zif_abapgit_gui_page~on_event + REDEFINITION. + + PROTECTED SECTION. + DATA: mo_repo TYPE REF TO zcl_abapgit_repo. + DATA: + mt_result TYPE scit_alvlist. + + METHODS: + render_result IMPORTING ro_html TYPE REF TO zcl_abapgit_html + iv_result TYPE scir_alvlist, + jump + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + is_sub_item TYPE zif_abapgit_definitions=>ty_item + i_line_number type i + RAISING + zcx_abapgit_exception. + PRIVATE SECTION. + CONSTANTS: c_object_separator TYPE char1 VALUE '|'. + +ENDCLASS. + + + +CLASS zcl_abapgit_gui_page_codi_base IMPLEMENTATION. + + METHOD render_result. + DATA: lv_class TYPE string, + lv_line TYPE string. + + ro_html->add( '
' ). + IF iv_result-sobjname IS INITIAL OR + ( iv_result-sobjname = iv_result-objname AND + iv_result-sobjtype = iv_result-sobjtype ). + ro_html->add_a( iv_txt = |{ iv_result-objtype } { iv_result-objname }| + iv_act = |{ iv_result-objtype }{ iv_result-objname }| && + |{ c_object_separator }{ c_object_separator }{ iv_result-line }| + iv_typ = zif_abapgit_definitions=>c_action_type-sapevent ). + + ELSE. + ro_html->add_a( iv_txt = |{ iv_result-objtype } { iv_result-objname }| && + | < { iv_result-sobjtype } { iv_result-sobjname }| + iv_act = |{ iv_result-objtype }{ iv_result-objname }| && + |{ c_object_separator }{ iv_result-sobjtype }{ iv_result-sobjname }| && + |{ c_object_separator }{ iv_result-line }| + iv_typ = zif_abapgit_definitions=>c_action_type-sapevent ). + + ENDIF. + ro_html->add( '
' ). + + CASE iv_result-kind. + WHEN 'E'. + lv_class = 'error'. + WHEN 'W'. + lv_class = 'warning'. + WHEN OTHERS. + lv_class = 'grey'. + ENDCASE. + + CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' + EXPORTING + input = iv_result-line + IMPORTING + output = lv_line. + + ro_html->add( |
Line { lv_line }: { iv_result-text }

| ). + + ENDMETHOD. + + METHOD zif_abapgit_gui_page~on_event. + DATA: ls_item TYPE zif_abapgit_definitions=>ty_item, + ls_sub_item TYPE zif_abapgit_definitions=>ty_item, + lv_main_object TYPE string, + lv_sub_object TYPE string, + lv_line_number_s TYPE string, + lv_line_number TYPE i. + + + CASE iv_action. + + WHEN zif_abapgit_definitions=>c_action-abapgit_home. + RETURN. + + WHEN OTHERS. + SPLIT iv_action AT c_object_separator INTO lv_main_object lv_sub_object lv_line_number_s. + ls_item-obj_type = lv_main_object(4). + ls_item-obj_name = lv_main_object+4(*). + + IF lv_sub_object IS NOT INITIAL. + ls_sub_item-obj_type = lv_sub_object(4). + ls_sub_item-obj_name = lv_sub_object+4(*). + ENDIF. + + lv_line_number = lv_line_number_s. + + jump( is_item = ls_item + is_sub_item = ls_sub_item + i_line_number = lv_line_number ). + + ev_state = zif_abapgit_definitions=>c_event_state-no_more_act. + + ENDCASE. + + ENDMETHOD. + + METHOD jump. + DATA: lo_test TYPE REF TO cl_ci_test_root, + li_code_inspector TYPE REF TO zif_abapgit_code_inspector, + ls_info TYPE scir_rest, + lo_result TYPE REF TO cl_ci_result_root, + lv_check_variant_name TYPE sci_chkv, + lv_package TYPE devclass. + DATA: lv_adt_jump_enabled TYPE abap_bool. + DATA: lv_line_number TYPE i. + DATA: ls_item TYPE zif_abapgit_definitions=>ty_item. + DATA: ls_sub_item TYPE zif_abapgit_definitions=>ty_item. + + FIELD-SYMBOLS: TYPE scir_alvlist. + + IF is_sub_item IS NOT INITIAL. + READ TABLE mt_result WITH KEY objtype = is_item-obj_type + objname = is_item-obj_name + sobjtype = is_sub_item-obj_type + sobjname = is_sub_item-obj_name + line = i_line_number + ASSIGNING . + ELSE. + READ TABLE mt_result WITH KEY objtype = is_item-obj_type + objname = is_item-obj_name + line = i_line_number + ASSIGNING . + ENDIF. + ASSERT IS ASSIGNED. + ls_item-obj_name = -objname. + ls_item-obj_type = -objtype. + + ls_sub_item-obj_name = -sobjname. + ls_sub_item-obj_type = -sobjtype. + + lv_package = mo_repo->get_package( ). + lv_check_variant_name = mo_repo->get_local_settings( )-code_inspector_check_variant. + + li_code_inspector = zcl_abapgit_factory=>get_code_inspector( + iv_package = lv_package + iv_check_variant_name = lv_check_variant_name ). + + " see SCI_LCL_DYNP_530 / HANDLE_DOUBLE_CLICK + + lv_adt_jump_enabled = zcl_abapgit_persist_settings=>get_instance( )->read( )->get_adt_jump_enabled( ). + + TRY. + IF lv_adt_jump_enabled = abap_true. + + lv_line_number = -line. + + zcl_abapgit_objects_super=>jump_adt( i_obj_name = ls_item-obj_name + i_obj_type = ls_item-obj_type + i_sub_obj_name = ls_sub_item-obj_name + i_sub_obj_type = ls_sub_item-obj_type + i_line_number = lv_line_number ). + RETURN. + + ENDIF. + CATCH zcx_abapgit_exception. + ENDTRY. + + TRY. + lo_test ?= cl_ci_tests=>get_test_ref( -test ). + + CATCH cx_root. + zcx_abapgit_exception=>raise( |Jump to object not supported in your NW release| ). + ENDTRY. + + lo_result = lo_test->get_result_node( -kind ). + + + MOVE-CORRESPONDING TO ls_info. + + lo_result->set_info( ls_info ). + lo_result->if_ci_test~navigate( ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/ui/zcl_abapgit_gui_page_codi_base.clas.xml b/src/ui/zcl_abapgit_gui_page_codi_base.clas.xml new file mode 100644 index 000000000..679369bed --- /dev/null +++ b/src/ui/zcl_abapgit_gui_page_codi_base.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_GUI_PAGE_CODI_BASE + 1 + E + base class for code inspector + 2 + 1 + X + X + X + X + + + + diff --git a/src/ui/zcl_abapgit_gui_page_syntax.clas.abap b/src/ui/zcl_abapgit_gui_page_syntax.clas.abap index 90cee2189..a958cfb0e 100644 --- a/src/ui/zcl_abapgit_gui_page_syntax.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_syntax.clas.abap @@ -1,5 +1,5 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION PUBLIC FINAL CREATE PUBLIC - INHERITING FROM zcl_abapgit_gui_page. + INHERITING FROM zcl_abapgit_gui_page_codi_base. PUBLIC SECTION. INTERFACES: zif_abapgit_gui_page_hotkey. @@ -9,7 +9,6 @@ CLASS zcl_abapgit_gui_page_syntax DEFINITION PUBLIC FINAL CREATE PUBLIC IMPORTING io_repo TYPE REF TO zcl_abapgit_repo. PROTECTED SECTION. - DATA: mo_repo TYPE REF TO zcl_abapgit_repo. METHODS: render_content REDEFINITION. @@ -30,23 +29,22 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_SYNTAX IMPLEMENTATION. METHOD render_content. - DATA: li_syntax_check TYPE REF TO zif_abapgit_code_inspector, - lt_result TYPE scit_alvlist, - ls_result LIKE LINE OF lt_result. + DATA: li_syntax_check TYPE REF TO zif_abapgit_code_inspector. + FIELD-SYMBOLS: LIKE LINE OF mt_result. li_syntax_check = zcl_abapgit_factory=>get_syntax_check( iv_package = mo_repo->get_package( ) ). - lt_result = li_syntax_check->run( ). + mt_result = li_syntax_check->run( ). CREATE OBJECT ro_html. ro_html->add( '
' ). - IF lines( lt_result ) = 0. + IF lines( mt_result ) = 0. ro_html->add( 'No errors' ). ENDIF. - LOOP AT lt_result INTO ls_result. - ro_html->add( |{ ls_result-objtype } { ls_result-objname } { ls_result-kind } { ls_result-text }
| ). + LOOP AT mt_result ASSIGNING . + render_result( ro_html = ro_html iv_result = ). ENDLOOP. ro_html->add( '
' ).