diff --git a/src/zabapgit_object_ddlx.prog.abap b/src/zabapgit_object_ddlx.prog.abap new file mode 100644 index 000000000..2b115c23b --- /dev/null +++ b/src/zabapgit_object_ddlx.prog.abap @@ -0,0 +1,163 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_ddlx +*&---------------------------------------------------------------------* + +CLASS lcl_object_ddlx DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. + + METHODS: + constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras. + + DATA: mo_persistence TYPE REF TO if_wb_object_persist. + +ENDCLASS. + +CLASS lcl_object_ddlx IMPLEMENTATION. + + METHOD constructor. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + mo_persistence = NEW cl_ddlx_adt_object_persist( ). + + ENDMETHOD. + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. + + METHOD lif_object~changed_by. + rv_user = c_user_unknown. + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + + rs_metadata-ddic = abap_true. + rs_metadata-delete_tadir = abap_true. + ENDMETHOD. + + METHOD lif_object~exists. + + rv_bool = abap_true. + + TRY. + mo_persistence->get( p_object_key = CONV #( ms_item-obj_name ) + p_version = 'A' + p_existence_check_only = abap_true ). + + CATCH cx_swb_exception. + rv_bool = abap_false. + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~jump. + + TRY. + + jump_adt( i_obj_name = ms_item-obj_name + i_obj_type = ms_item-obj_type ). + + CATCH zcx_abapgit_exception. + zcx_abapgit_exception=>raise( 'DDLX Jump Error' ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~delete. + + DATA: lo_data_model TYPE REF TO if_wb_object_data_model, + lv_text TYPE string, + lx_error TYPE REF TO cx_root. + + TRY. + lo_data_model = NEW cl_ddlx_wb_object_data( ). + + mo_persistence->delete( p_object_key = CONV #( ms_item-obj_name ) + p_version = 'A' ). + + CATCH cx_root INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~serialize. + + DATA: lo_data_model TYPE REF TO if_wb_object_data_model, + ls_data TYPE cl_ddlx_wb_object_data=>ty_object_data, + lv_text TYPE string, + lx_error TYPE REF TO cx_root. + + TRY. + lo_data_model = NEW cl_ddlx_wb_object_data( ). + + mo_persistence->get( + EXPORTING + p_object_key = CONV #( ms_item-obj_name ) + p_version = 'A' + CHANGING + p_object_data = lo_data_model ). + + lo_data_model->get_data( + IMPORTING + p_data = ls_data ). + + CLEAR: ls_data-metadata-changed_at, + ls_data-metadata-changed_by, + ls_data-metadata-created_at, + ls_data-metadata-created_by, + ls_data-metadata-package_ref-name, + ls_data-metadata-container_ref-package_name. + + io_xml->add( iv_name = 'DDLX' + ig_data = ls_data ). + + CATCH cx_root INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~deserialize. + + DATA: lo_data_model TYPE REF TO if_wb_object_data_model, + ls_data TYPE cl_ddlx_wb_object_data=>ty_object_data, + lv_text TYPE string, + lx_error TYPE REF TO cx_root. + + io_xml->read( + EXPORTING + iv_name = 'DDLX' + CHANGING + cg_data = ls_data ). + + TRY. + lo_data_model = NEW cl_ddlx_wb_object_data( ). + + lo_data_model->set_data( ls_data ). + + mo_persistence->save( lo_data_model ). + + CATCH cx_root INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + ENDMETHOD. + +ENDCLASS. diff --git a/src/zabapgit_object_ddlx.prog.xml b/src/zabapgit_object_ddlx.prog.xml new file mode 100644 index 000000000..dda4bcec0 --- /dev/null +++ b/src/zabapgit_object_ddlx.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZABAPGIT_OBJECT_DDLX + A + X + S + D$ + I + X + D$S + X + + + + R + ZABAPGIT_OBJECT_DDLX + 20 + + + + + diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index 24d511211..30eaedab9 100644 --- a/src/zabapgit_object_serializing.prog.abap +++ b/src/zabapgit_object_serializing.prog.abap @@ -12,6 +12,7 @@ INCLUDE zabapgit_object_clas_new. INCLUDE zabapgit_object_cmpt. INCLUDE zabapgit_object_dcls. INCLUDE zabapgit_object_ddls. +INCLUDE zabapgit_object_ddlx. INCLUDE zabapgit_object_devc. INCLUDE zabapgit_object_dial. INCLUDE zabapgit_object_doct.