mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-04 05:47:17 +08:00

* mark inactive objects in repo list Inactive object are marked in the repo list The sort order for changed files is not changed unchanged inactive files come right after the changed files * move acitve check to object interface * add is_active for objects up to F * add is_active for objects up to P * add is_active for objects up to T * add is_active for objects up to X all core object implement (except SSFO) the standard active check via FM RS_INACTIVE_OBJECTS_WARNING now * add is_active to plugins bridge - always active * finish object interface implementation + objects * add is_active for offline with object interface * rename returning to RV_ * use returning for serialize * cleanup, PP, UT
230 lines
5.2 KiB
ABAP
230 lines
5.2 KiB
ABAP
CLASS zcl_abapgit_object_xslt DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES zif_abapgit_object.
|
|
ALIASES mo_files FOR zif_abapgit_object~mo_files.
|
|
|
|
PRIVATE SECTION.
|
|
METHODS:
|
|
get
|
|
RETURNING VALUE(ro_xslt) TYPE REF TO cl_o2_api_xsltdesc
|
|
RAISING zcx_abapgit_exception.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_ABAPGIT_OBJECT_XSLT IMPLEMENTATION.
|
|
|
|
|
|
METHOD get.
|
|
|
|
DATA: lv_name TYPE cxsltdesc.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
cl_o2_api_xsltdesc=>load(
|
|
EXPORTING
|
|
p_xslt_desc = lv_name
|
|
IMPORTING
|
|
p_obj = ro_xslt
|
|
EXCEPTIONS
|
|
not_existing = 1
|
|
permission_failure = 2
|
|
OTHERS = 3 ).
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( 'error from cl_o2_api_xsltdesc=>load' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~changed_by.
|
|
|
|
DATA: lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
|
ls_attributes TYPE o2xsltattr.
|
|
|
|
lo_xslt = get( ).
|
|
lo_xslt->get_attributes(
|
|
RECEIVING
|
|
p_attributes = ls_attributes
|
|
EXCEPTIONS
|
|
object_invalid = 1
|
|
xsltdesc_deleted = 2
|
|
OTHERS = 3 ).
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
rv_user = ls_attributes-changedby.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~compare_to_remote_version.
|
|
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~delete.
|
|
|
|
DATA: lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
|
lv_name TYPE cxsltdesc.
|
|
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
cl_o2_api_xsltdesc=>load(
|
|
EXPORTING
|
|
p_xslt_desc = lv_name
|
|
IMPORTING
|
|
p_obj = lo_xslt
|
|
EXCEPTIONS
|
|
error_occured = 1
|
|
not_existing = 2
|
|
permission_failure = 3
|
|
version_not_found = 4
|
|
OTHERS = 5 ).
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( 'error from cl_o2_api_xsltdesc=>load' ).
|
|
ENDIF.
|
|
|
|
lo_xslt->set_changeable( abap_true ).
|
|
lo_xslt->delete( ).
|
|
lo_xslt->save( ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~deserialize.
|
|
|
|
DATA: lv_source TYPE string,
|
|
lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
|
lv_len TYPE i,
|
|
ls_attributes TYPE o2xsltattr.
|
|
|
|
|
|
IF zif_abapgit_object~exists( ) = abap_true.
|
|
zif_abapgit_object~delete( ).
|
|
ENDIF.
|
|
|
|
io_xml->read( EXPORTING iv_name = 'ATTRIBUTES'
|
|
CHANGING cg_data = ls_attributes ).
|
|
|
|
ls_attributes-devclass = iv_package.
|
|
|
|
lv_source = mo_files->read_string( iv_extra = 'source'
|
|
iv_ext = 'xml' ) ##NO_TEXT.
|
|
|
|
* workaround: somewhere additional linefeeds are added
|
|
lv_len = strlen( lv_source ) - 2.
|
|
IF lv_source+lv_len(2) = cl_abap_char_utilities=>cr_lf.
|
|
lv_source = lv_source(lv_len).
|
|
ENDIF.
|
|
|
|
cl_o2_api_xsltdesc=>create_new_from_string(
|
|
EXPORTING
|
|
p_source = lv_source
|
|
p_attr = ls_attributes
|
|
IMPORTING
|
|
p_obj = lo_xslt
|
|
EXCEPTIONS
|
|
action_cancelled = 1
|
|
error_occured = 2
|
|
not_authorized = 3
|
|
object_already_existing = 4
|
|
undefined_name = 5
|
|
OTHERS = 6 ).
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |error from cl_o2_api_xsltdesc=>create_new_from_string, { sy-subrc }| ).
|
|
ENDIF.
|
|
|
|
lo_xslt->activate( ).
|
|
|
|
lo_xslt->save( ).
|
|
|
|
lo_xslt->set_changeable( abap_false ).
|
|
|
|
zcl_abapgit_objects_activation=>add_item( ms_item ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~exists.
|
|
|
|
DATA: lv_name TYPE cxsltdesc.
|
|
|
|
lv_name = ms_item-obj_name.
|
|
|
|
rv_bool = cl_o2_api_xsltdesc=>exists( lv_name ).
|
|
IF rv_bool = '1'.
|
|
rv_bool = abap_true.
|
|
ELSE.
|
|
rv_bool = abap_false.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_metadata.
|
|
rs_metadata = get_metadata( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~has_changed_since.
|
|
rv_changed = abap_true.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~is_active.
|
|
rv_active = is_active( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~is_locked.
|
|
rv_is_locked = abap_false.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~jump.
|
|
|
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
|
EXPORTING
|
|
operation = 'SHOW'
|
|
object_name = ms_item-obj_name
|
|
object_type = ms_item-obj_type.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~serialize.
|
|
|
|
DATA: lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
|
lv_source TYPE string,
|
|
ls_attributes TYPE o2xsltattr.
|
|
|
|
|
|
lo_xslt = get( ).
|
|
|
|
ls_attributes = lo_xslt->get_attributes( ).
|
|
|
|
CLEAR: ls_attributes-author,
|
|
ls_attributes-createdon,
|
|
ls_attributes-changedby,
|
|
ls_attributes-changedon,
|
|
ls_attributes-devclass.
|
|
|
|
io_xml->add( iv_name = 'ATTRIBUTES'
|
|
ig_data = ls_attributes ).
|
|
|
|
lv_source = lo_xslt->get_source_string( ).
|
|
|
|
mo_files->add_string( iv_extra = 'source'
|
|
iv_ext = 'xml'
|
|
iv_string = lv_source ) ##NO_TEXT.
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|