mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Merge pull request #1138 from larshp/lcl_objects_files
lcl_objects_files to global
This commit is contained in:
commit
082688de64
10
src/objects/package.devc.xml
Normal file
10
src/objects/package.devc.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>Objects</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
342
src/objects/zcl_abapgit_objects_files.clas.abap
Normal file
342
src/objects/zcl_abapgit_objects_files.clas.abap
Normal file
|
@ -0,0 +1,342 @@
|
|||
CLASS zcl_abapgit_objects_files DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
iv_path TYPE string OPTIONAL,
|
||||
add_string
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
iv_string TYPE string
|
||||
RAISING zcx_abapgit_exception,
|
||||
read_string
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
RETURNING VALUE(rv_string) TYPE string
|
||||
RAISING zcx_abapgit_exception,
|
||||
add_xml
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||
iv_normalize TYPE sap_bool DEFAULT abap_true
|
||||
is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL
|
||||
RAISING zcx_abapgit_exception,
|
||||
* needed since type-check during dynamic call fails even if the object is compatible
|
||||
add_xml_from_plugin
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
io_xml TYPE REF TO object
|
||||
iv_normalize TYPE sap_bool DEFAULT abap_true
|
||||
RAISING zcx_abapgit_exception ##called,
|
||||
read_xml
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
RETURNING VALUE(ro_xml) TYPE REF TO zcl_abapgit_xml_input
|
||||
RAISING zcx_abapgit_exception,
|
||||
read_abap
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_error TYPE sap_bool DEFAULT abap_true
|
||||
RETURNING VALUE(rt_abap) TYPE abaptxt255_tab
|
||||
RAISING zcx_abapgit_exception,
|
||||
add_abap
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
it_abap TYPE STANDARD TABLE
|
||||
RAISING zcx_abapgit_exception,
|
||||
add
|
||||
IMPORTING is_file TYPE zif_abapgit_definitions=>ty_file,
|
||||
add_raw
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
iv_data TYPE xstring
|
||||
RAISING zcx_abapgit_exception,
|
||||
read_raw
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
RETURNING VALUE(rv_data) TYPE xstring
|
||||
RAISING zcx_abapgit_exception,
|
||||
get_files
|
||||
RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
set_files
|
||||
IMPORTING it_files TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
get_accessed_files
|
||||
RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item,
|
||||
mt_accessed_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt,
|
||||
mt_files TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
mv_path TYPE string.
|
||||
|
||||
METHODS:
|
||||
read_file
|
||||
IMPORTING iv_filename TYPE string
|
||||
iv_error TYPE abap_bool DEFAULT abap_true
|
||||
EXPORTING ev_data TYPE xstring
|
||||
RAISING zcx_abapgit_exception,
|
||||
filename
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
RETURNING VALUE(rv_filename) TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECTS_FILES IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD add.
|
||||
APPEND is_file TO mt_files.
|
||||
ENDMETHOD. "add
|
||||
|
||||
|
||||
METHOD add_abap.
|
||||
|
||||
DATA: lv_source TYPE string,
|
||||
ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
|
||||
CONCATENATE LINES OF it_abap INTO lv_source SEPARATED BY zif_abapgit_definitions=>gc_newline.
|
||||
* when editing files via eg. GitHub web interface it adds a newline at end of file
|
||||
lv_source = lv_source && zif_abapgit_definitions=>gc_newline.
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'abap' ). "#EC NOTEXT
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_source ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "abap_to_file
|
||||
|
||||
|
||||
METHOD add_raw.
|
||||
|
||||
DATA: ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-data = iv_data.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "add_raw
|
||||
|
||||
|
||||
METHOD add_string.
|
||||
|
||||
DATA: ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ). "#EC NOTEXT
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( iv_string ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "add_string
|
||||
|
||||
|
||||
METHOD add_xml.
|
||||
|
||||
DATA: lv_xml TYPE string,
|
||||
ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
|
||||
lv_xml = io_xml->render( iv_normalize = iv_normalize
|
||||
is_metadata = is_metadata ).
|
||||
ls_file-path = '/'.
|
||||
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'xml' ). "#EC NOTEXT
|
||||
|
||||
REPLACE FIRST OCCURRENCE
|
||||
OF REGEX '<\?xml version="1\.0" encoding="[\w-]+"\?>'
|
||||
IN lv_xml
|
||||
WITH '<?xml version="1.0" encoding="utf-8"?>'.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "do
|
||||
|
||||
|
||||
METHOD add_xml_from_plugin.
|
||||
* this method wraps add_xml as in the plugin. This is necessary as the wrapped
|
||||
* xml-object in the plugin can only be typed to object.
|
||||
* ABAP does not perform implicit type casts (also if compatible) in signatures,
|
||||
* therefore this method's signature is typed ref to object
|
||||
DATA lo_xml TYPE REF TO zcl_abapgit_xml_output.
|
||||
|
||||
lo_xml ?= io_xml.
|
||||
|
||||
me->add_xml(
|
||||
iv_extra = iv_extra
|
||||
io_xml = lo_xml
|
||||
iv_normalize = iv_normalize ).
|
||||
|
||||
ENDMETHOD. "add_xml_from_plugin
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
ms_item = is_item.
|
||||
mv_path = iv_path.
|
||||
ENDMETHOD. "constructor
|
||||
|
||||
|
||||
METHOD filename.
|
||||
|
||||
DATA: lv_obj_name TYPE string.
|
||||
|
||||
|
||||
lv_obj_name = ms_item-obj_name.
|
||||
|
||||
IF ms_item-obj_type = 'DEVC'.
|
||||
" Packages have a fixed filename so that the repository can be installed to a different
|
||||
" package(-hierarchy) on the client and not show up as a different package in the repo.
|
||||
lv_obj_name = 'package'.
|
||||
ENDIF.
|
||||
|
||||
IF iv_extra IS INITIAL.
|
||||
CONCATENATE lv_obj_name '.' ms_item-obj_type '.' iv_ext
|
||||
INTO rv_filename. "#EC NOTEXT
|
||||
ELSE.
|
||||
CONCATENATE lv_obj_name '.' ms_item-obj_type '.' iv_extra '.' iv_ext
|
||||
INTO rv_filename. "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
* handle namespaces
|
||||
REPLACE ALL OCCURRENCES OF '/' IN rv_filename WITH '#'.
|
||||
TRANSLATE rv_filename TO LOWER CASE.
|
||||
|
||||
ENDMETHOD. "filename
|
||||
|
||||
|
||||
METHOD get_accessed_files.
|
||||
rt_files = mt_accessed_files.
|
||||
ENDMETHOD. " get_accessed_files.
|
||||
|
||||
|
||||
METHOD get_files.
|
||||
rt_files = mt_files.
|
||||
ENDMETHOD. "get_files
|
||||
|
||||
|
||||
METHOD read_abap.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lv_data TYPE xstring,
|
||||
lv_abap TYPE string.
|
||||
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'abap' ). "#EC NOTEXT
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
iv_error = iv_error
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
IF lv_data IS INITIAL. " Post-handling of iv_error = false
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_abap = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
SPLIT lv_abap AT zif_abapgit_definitions=>gc_newline INTO TABLE rt_abap.
|
||||
|
||||
ENDMETHOD. "read_abap
|
||||
|
||||
|
||||
METHOD read_file.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF mt_files,
|
||||
<ls_accessed> LIKE LINE OF mt_accessed_files.
|
||||
|
||||
CLEAR ev_data.
|
||||
|
||||
IF mv_path IS NOT INITIAL.
|
||||
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY path = mv_path
|
||||
filename = iv_filename.
|
||||
ELSE.
|
||||
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY filename = iv_filename.
|
||||
ENDIF.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
IF iv_error = abap_true.
|
||||
zcx_abapgit_exception=>raise( |File not found: { iv_filename }| ).
|
||||
ELSE.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
" Update access table
|
||||
READ TABLE mt_accessed_files TRANSPORTING NO FIELDS
|
||||
WITH KEY path = <ls_file>-path filename = <ls_file>-filename.
|
||||
IF sy-subrc > 0. " Not found ? -> Add
|
||||
APPEND INITIAL LINE TO mt_accessed_files ASSIGNING <ls_accessed>.
|
||||
MOVE-CORRESPONDING <ls_file> TO <ls_accessed>.
|
||||
ENDIF.
|
||||
|
||||
ev_data = <ls_file>-data.
|
||||
|
||||
ENDMETHOD. " read_file.
|
||||
|
||||
|
||||
METHOD read_raw.
|
||||
|
||||
DATA: lv_filename TYPE string.
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ).
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = rv_data ).
|
||||
|
||||
ENDMETHOD. "read_raw
|
||||
|
||||
|
||||
METHOD read_string.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lv_data TYPE xstring.
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ). "#EC NOTEXT
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
rv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
ENDMETHOD. "read_string
|
||||
|
||||
|
||||
METHOD read_xml.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lv_data TYPE xstring,
|
||||
lv_xml TYPE string.
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'xml' ). "#EC NOTEXT
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
CREATE OBJECT ro_xml
|
||||
EXPORTING
|
||||
iv_xml = lv_xml.
|
||||
|
||||
ENDMETHOD. "read_xml
|
||||
|
||||
|
||||
METHOD set_files.
|
||||
mt_files = it_files.
|
||||
ENDMETHOD. "set_files
|
||||
ENDCLASS.
|
18
src/objects/zcl_abapgit_objects_files.clas.xml
Normal file
18
src/objects/zcl_abapgit_objects_files.clas.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_OBJECTS_FILES</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Files</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -29,7 +29,7 @@ CLASS lcl_object_enho_wdyc DEFINITION.
|
|||
METHODS: constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
@ -140,7 +140,7 @@ CLASS lcl_object_enho_wdyn DEFINITION.
|
|||
METHODS: constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
@ -271,13 +271,13 @@ CLASS lcl_object_enho_clif DEFINITION.
|
|||
cx_enh_root,
|
||||
serialize
|
||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||
io_files TYPE REF TO lcl_objects_files
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files
|
||||
io_clif TYPE REF TO cl_enh_tool_clif
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-METHODS: serialize_includes
|
||||
IMPORTING io_files TYPE REF TO lcl_objects_files
|
||||
IMPORTING io_files TYPE REF TO zcl_abapgit_objects_files
|
||||
io_clif TYPE REF TO cl_enh_tool_clif
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
|
@ -431,7 +431,7 @@ CLASS lcl_object_enho_badi DEFINITION.
|
|||
METHODS: constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
@ -552,7 +552,7 @@ CLASS lcl_object_enho_hook DEFINITION.
|
|||
METHODS: constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
|
@ -565,7 +565,7 @@ CLASS lcl_object_enho_hook DEFINITION.
|
|||
TYPES: ty_spaces_tt TYPE STANDARD TABLE OF ty_spaces WITH DEFAULT KEY.
|
||||
|
||||
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
DATA: mo_files TYPE REF TO lcl_objects_files.
|
||||
DATA: mo_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
METHODS hook_impl_deserialize
|
||||
IMPORTING it_spaces TYPE ty_spaces_tt
|
||||
|
@ -760,12 +760,12 @@ CLASS lcl_object_enho_intf DEFINITION.
|
|||
constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item,
|
||||
mo_files TYPE REF TO lcl_objects_files.
|
||||
mo_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
ENDCLASS. "lcl_object_enho_interface DEFINITION
|
||||
|
||||
|
@ -865,12 +865,12 @@ CLASS lcl_object_enho_class DEFINITION.
|
|||
constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
DATA: mo_files TYPE REF TO lcl_objects_files.
|
||||
DATA: mo_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
ENDCLASS. "lcl_object_enho_class DEFINITION
|
||||
|
||||
|
@ -1005,12 +1005,12 @@ CLASS lcl_object_enho_fugr DEFINITION.
|
|||
METHODS: constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files.
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
INTERFACES: lif_object_enho.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item,
|
||||
mo_files TYPE REF TO lcl_objects_files.
|
||||
mo_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
ENDCLASS. "lcl_object_enho_wdyconf DEFINITION
|
||||
|
||||
|
|
|
@ -157,91 +157,6 @@ CLASS lcl_objects_activation IMPLEMENTATION.
|
|||
|
||||
ENDCLASS. "lcl_objects_activation IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_objects_files DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_objects_files DEFINITION.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
iv_path TYPE string OPTIONAL,
|
||||
add_string
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
iv_string TYPE string
|
||||
RAISING zcx_abapgit_exception,
|
||||
read_string
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
RETURNING VALUE(rv_string) TYPE string
|
||||
RAISING zcx_abapgit_exception,
|
||||
add_xml
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
io_xml TYPE REF TO zcl_abapgit_xml_output
|
||||
iv_normalize TYPE sap_bool DEFAULT abap_true
|
||||
is_metadata TYPE zif_abapgit_definitions=>ty_metadata OPTIONAL
|
||||
RAISING zcx_abapgit_exception,
|
||||
* needed since type-check during dynamic call fails even if the object is compatible
|
||||
add_xml_from_plugin
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
io_xml TYPE REF TO object
|
||||
iv_normalize TYPE sap_bool DEFAULT abap_true
|
||||
RAISING zcx_abapgit_exception ##called,
|
||||
read_xml
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
RETURNING VALUE(ro_xml) TYPE REF TO zcl_abapgit_xml_input
|
||||
RAISING zcx_abapgit_exception,
|
||||
read_abap
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_error TYPE sap_bool DEFAULT abap_true
|
||||
RETURNING VALUE(rt_abap) TYPE abaptxt255_tab
|
||||
RAISING zcx_abapgit_exception,
|
||||
add_abap
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
it_abap TYPE STANDARD TABLE
|
||||
RAISING zcx_abapgit_exception,
|
||||
add
|
||||
IMPORTING is_file TYPE zif_abapgit_definitions=>ty_file,
|
||||
add_raw
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
iv_data TYPE xstring
|
||||
RAISING zcx_abapgit_exception,
|
||||
read_raw
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
RETURNING VALUE(rv_data) TYPE xstring
|
||||
RAISING zcx_abapgit_exception,
|
||||
get_files
|
||||
RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
set_files
|
||||
IMPORTING it_files TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
get_accessed_files
|
||||
RETURNING VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_file_signatures_tt.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_item TYPE zif_abapgit_definitions=>ty_item,
|
||||
mt_accessed_files TYPE zif_abapgit_definitions=>ty_file_signatures_tt,
|
||||
mt_files TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
mv_path TYPE string.
|
||||
|
||||
METHODS:
|
||||
read_file
|
||||
IMPORTING iv_filename TYPE string
|
||||
iv_error TYPE abap_bool DEFAULT abap_true
|
||||
EXPORTING ev_data TYPE xstring
|
||||
RAISING zcx_abapgit_exception,
|
||||
filename
|
||||
IMPORTING iv_extra TYPE clike OPTIONAL
|
||||
iv_ext TYPE string
|
||||
RETURNING VALUE(rv_filename) TYPE string.
|
||||
|
||||
ENDCLASS. "lcl_objects_files DEFINITION
|
||||
|
||||
INTERFACE lif_comparison_result.
|
||||
METHODS:
|
||||
show_confirmation_dialog,
|
||||
|
@ -304,259 +219,10 @@ INTERFACE lif_object.
|
|||
RETURNING VALUE(ro_comparison_result) TYPE REF TO lif_comparison_result
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
DATA: mo_files TYPE REF TO lcl_objects_files.
|
||||
DATA: mo_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
ENDINTERFACE. "lif_object DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_objects_files IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_objects_files IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
ms_item = is_item.
|
||||
mv_path = iv_path.
|
||||
ENDMETHOD. "constructor
|
||||
|
||||
METHOD add.
|
||||
APPEND is_file TO mt_files.
|
||||
ENDMETHOD. "add
|
||||
|
||||
METHOD get_files.
|
||||
rt_files = mt_files.
|
||||
ENDMETHOD. "get_files
|
||||
|
||||
METHOD set_files.
|
||||
mt_files = it_files.
|
||||
ENDMETHOD. "set_files
|
||||
|
||||
METHOD get_accessed_files.
|
||||
rt_files = mt_accessed_files.
|
||||
ENDMETHOD. " get_accessed_files.
|
||||
|
||||
METHOD read_string.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lv_data TYPE xstring.
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ). "#EC NOTEXT
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
rv_string = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
ENDMETHOD. "read_string
|
||||
|
||||
METHOD read_abap.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lv_data TYPE xstring,
|
||||
lv_abap TYPE string.
|
||||
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'abap' ). "#EC NOTEXT
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
iv_error = iv_error
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
IF lv_data IS INITIAL. " Post-handling of iv_error = false
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_abap = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
SPLIT lv_abap AT zif_abapgit_definitions=>gc_newline INTO TABLE rt_abap.
|
||||
|
||||
ENDMETHOD. "read_abap
|
||||
|
||||
METHOD add_abap.
|
||||
|
||||
DATA: lv_source TYPE string,
|
||||
ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
|
||||
CONCATENATE LINES OF it_abap INTO lv_source SEPARATED BY zif_abapgit_definitions=>gc_newline.
|
||||
* when editing files via eg. GitHub web interface it adds a newline at end of file
|
||||
lv_source = lv_source && zif_abapgit_definitions=>gc_newline.
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'abap' ). "#EC NOTEXT
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_source ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "abap_to_file
|
||||
|
||||
METHOD add_string.
|
||||
|
||||
DATA: ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ). "#EC NOTEXT
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( iv_string ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "add_string
|
||||
|
||||
METHOD add_xml.
|
||||
|
||||
DATA: lv_xml TYPE string,
|
||||
ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
|
||||
lv_xml = io_xml->render( iv_normalize = iv_normalize
|
||||
is_metadata = is_metadata ).
|
||||
ls_file-path = '/'.
|
||||
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'xml' ). "#EC NOTEXT
|
||||
|
||||
REPLACE FIRST OCCURRENCE
|
||||
OF REGEX '<\?xml version="1\.0" encoding="[\w-]+"\?>'
|
||||
IN lv_xml
|
||||
WITH '<?xml version="1.0" encoding="utf-8"?>'.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ls_file-data = zcl_abapgit_convert=>string_to_xstring_utf8( lv_xml ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "do
|
||||
|
||||
METHOD read_xml.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lv_data TYPE xstring,
|
||||
lv_xml TYPE string.
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = 'xml' ). "#EC NOTEXT
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = lv_data ).
|
||||
|
||||
lv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( lv_data ).
|
||||
|
||||
CREATE OBJECT ro_xml
|
||||
EXPORTING
|
||||
iv_xml = lv_xml.
|
||||
|
||||
ENDMETHOD. "read_xml
|
||||
|
||||
METHOD filename.
|
||||
|
||||
DATA: lv_obj_name TYPE string.
|
||||
|
||||
|
||||
lv_obj_name = ms_item-obj_name.
|
||||
|
||||
IF ms_item-obj_type = 'DEVC'.
|
||||
" Packages have a fixed filename so that the repository can be installed to a different
|
||||
" package(-hierarchy) on the client and not show up as a different package in the repo.
|
||||
lv_obj_name = 'package'.
|
||||
ENDIF.
|
||||
|
||||
IF iv_extra IS INITIAL.
|
||||
CONCATENATE lv_obj_name '.' ms_item-obj_type '.' iv_ext
|
||||
INTO rv_filename. "#EC NOTEXT
|
||||
ELSE.
|
||||
CONCATENATE lv_obj_name '.' ms_item-obj_type '.' iv_extra '.' iv_ext
|
||||
INTO rv_filename. "#EC NOTEXT
|
||||
ENDIF.
|
||||
|
||||
* handle namespaces
|
||||
REPLACE ALL OCCURRENCES OF '/' IN rv_filename WITH '#'.
|
||||
TRANSLATE rv_filename TO LOWER CASE.
|
||||
|
||||
ENDMETHOD. "filename
|
||||
|
||||
METHOD add_xml_from_plugin.
|
||||
* this method wraps add_xml as in the plugin. This is necessary as the wrapped
|
||||
* xml-object in the plugin can only be typed to object.
|
||||
* ABAP does not perform implicit type casts (also if compatible) in signatures,
|
||||
* therefore this method's signature is typed ref to object
|
||||
DATA lo_xml TYPE REF TO zcl_abapgit_xml_output.
|
||||
|
||||
lo_xml ?= io_xml.
|
||||
|
||||
me->add_xml(
|
||||
iv_extra = iv_extra
|
||||
io_xml = lo_xml
|
||||
iv_normalize = iv_normalize ).
|
||||
|
||||
ENDMETHOD. "add_xml_from_plugin
|
||||
|
||||
METHOD read_file.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF mt_files,
|
||||
<ls_accessed> LIKE LINE OF mt_accessed_files.
|
||||
|
||||
CLEAR ev_data.
|
||||
|
||||
IF mv_path IS NOT INITIAL.
|
||||
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY path = mv_path
|
||||
filename = iv_filename.
|
||||
ELSE.
|
||||
READ TABLE mt_files ASSIGNING <ls_file> WITH KEY filename = iv_filename.
|
||||
ENDIF.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
IF iv_error = abap_true.
|
||||
zcx_abapgit_exception=>raise( |File not found: { iv_filename }| ).
|
||||
ELSE.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
" Update access table
|
||||
READ TABLE mt_accessed_files TRANSPORTING NO FIELDS
|
||||
WITH KEY path = <ls_file>-path filename = <ls_file>-filename.
|
||||
IF sy-subrc > 0. " Not found ? -> Add
|
||||
APPEND INITIAL LINE TO mt_accessed_files ASSIGNING <ls_accessed>.
|
||||
MOVE-CORRESPONDING <ls_file> TO <ls_accessed>.
|
||||
ENDIF.
|
||||
|
||||
ev_data = <ls_file>-data.
|
||||
|
||||
ENDMETHOD. " read_file.
|
||||
|
||||
METHOD add_raw.
|
||||
|
||||
DATA: ls_file TYPE zif_abapgit_definitions=>ty_file.
|
||||
|
||||
ls_file-path = '/'.
|
||||
ls_file-data = iv_data.
|
||||
ls_file-filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ).
|
||||
|
||||
APPEND ls_file TO mt_files.
|
||||
|
||||
ENDMETHOD. "add_raw
|
||||
|
||||
METHOD read_raw.
|
||||
|
||||
DATA: lv_filename TYPE string.
|
||||
|
||||
lv_filename = filename( iv_extra = iv_extra
|
||||
iv_ext = iv_ext ).
|
||||
|
||||
read_file( EXPORTING iv_filename = lv_filename
|
||||
IMPORTING ev_data = rv_data ).
|
||||
|
||||
ENDMETHOD. "read_raw
|
||||
|
||||
ENDCLASS. "lcl_objects_files IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_objects_super DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -847,7 +513,7 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super.
|
|||
METHODS serialize_program
|
||||
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output OPTIONAL
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
io_files TYPE REF TO lcl_objects_files
|
||||
io_files TYPE REF TO zcl_abapgit_objects_files
|
||||
iv_program TYPE programm OPTIONAL
|
||||
iv_extra TYPE clike OPTIONAL
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
|
|
@ -344,7 +344,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
|
||||
DATA: li_obj TYPE REF TO lif_object,
|
||||
lo_xml TYPE REF TO zcl_abapgit_xml_output,
|
||||
lo_files TYPE REF TO lcl_objects_files.
|
||||
lo_files TYPE REF TO zcl_abapgit_objects_files.
|
||||
|
||||
|
||||
IF is_supported( is_item ) = abap_false.
|
||||
|
@ -429,7 +429,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
li_obj TYPE REF TO lif_object,
|
||||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lv_package TYPE devclass,
|
||||
lo_files TYPE REF TO lcl_objects_files,
|
||||
lo_files TYPE REF TO zcl_abapgit_objects_files,
|
||||
lo_xml TYPE REF TO zcl_abapgit_xml_input,
|
||||
lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||
lt_ddic TYPE TABLE OF ty_deserialization,
|
||||
|
|
|
@ -157,7 +157,8 @@ CLASS ltd_spy_oo_object IMPLEMENTATION.
|
|||
ENDCLASS.
|
||||
|
||||
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
||||
INHERITING FROM lcl_objects_files.
|
||||
INHERITING FROM zcl_abapgit_objects_files.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS constructor.
|
||||
METHODS add_abap REDEFINITION.
|
||||
|
|
Loading…
Reference in New Issue
Block a user