diff --git a/src/zcl_excel_collection.clas.abap b/src/zcl_excel_collection.clas.abap new file mode 100644 index 0000000..868f5ed --- /dev/null +++ b/src/zcl_excel_collection.clas.abap @@ -0,0 +1,84 @@ +CLASS zcl_excel_collection DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + TYPES: + ty_collection TYPE STANDARD TABLE OF REF TO object . + + DATA collection TYPE ty_collection READ-ONLY . + + METHODS size + RETURNING + VALUE(size) TYPE i . + METHODS is_empty + RETURNING + VALUE(is_empty) TYPE abap_bool . + METHODS get + IMPORTING + !index TYPE i + RETURNING + VALUE(object) TYPE REF TO object . + METHODS get_iterator + RETURNING + VALUE(iterator) TYPE REF TO zcl_excel_collection_iterator . + METHODS add + IMPORTING + !element TYPE REF TO object . + METHODS remove + IMPORTING + !element TYPE REF TO object . + METHODS clear . + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS ZCL_EXCEL_COLLECTION IMPLEMENTATION. + + + METHOD add . + APPEND element TO collection. + ENDMETHOD. + + + METHOD clear . + CLEAR collection. + ENDMETHOD. + + + METHOD get . + READ TABLE collection INDEX index INTO object. + ENDMETHOD. + + + METHOD get_iterator . + CREATE OBJECT iterator + EXPORTING + collection = me. + ENDMETHOD. + + + METHOD is_empty. + is_empty = boolc( size( ) = 0 ). + ENDMETHOD. + + + METHOD remove . + DATA obj TYPE REF TO object. + LOOP AT collection INTO obj. + IF obj = element. + DELETE collection. + RETURN. + ENDIF. + ENDLOOP. + ENDMETHOD. + + + METHOD size. + size = lines( collection ). + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_excel_collection.clas.testclasses.abap b/src/zcl_excel_collection.clas.testclasses.abap new file mode 100644 index 0000000..5ef517e --- /dev/null +++ b/src/zcl_excel_collection.clas.testclasses.abap @@ -0,0 +1,37 @@ +CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL. + + PRIVATE SECTION. + METHODS test01 FOR TESTING RAISING cx_static_check. +ENDCLASS. + + +CLASS ltcl_test IMPLEMENTATION. + + METHOD test01. + + DATA lo_collection TYPE REF TO zcl_excel_collection. + + CREATE OBJECT lo_collection. + + cl_abap_unit_assert=>assert_equals( + act = lo_collection->size( ) + exp = 0 ). + + cl_abap_unit_assert=>assert_equals( + act = lo_collection->is_empty( ) + exp = abap_true ). + +* heh, yea, add the collection to itself :) + lo_collection->add( lo_collection ). + + cl_abap_unit_assert=>assert_equals( + act = lo_collection->size( ) + exp = 1 ). + + cl_abap_unit_assert=>assert_equals( + act = lo_collection->is_empty( ) + exp = abap_false ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zcl_excel_collection.clas.xml b/src/zcl_excel_collection.clas.xml new file mode 100644 index 0000000..89f82e0 --- /dev/null +++ b/src/zcl_excel_collection.clas.xml @@ -0,0 +1,17 @@ + + + + + + ZCL_EXCEL_COLLECTION + E + abap2xlsx - Object Collection + 1 + X + X + X + X + + + + diff --git a/src/zcl_excel_collection_iterator.clas.abap b/src/zcl_excel_collection_iterator.clas.abap new file mode 100644 index 0000000..d104dc2 --- /dev/null +++ b/src/zcl_excel_collection_iterator.clas.abap @@ -0,0 +1,52 @@ +CLASS zcl_excel_collection_iterator DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + METHODS get_index + RETURNING + VALUE(index) TYPE i. + METHODS has_next + RETURNING + VALUE(has_next) TYPE abap_bool. + METHODS get_next + RETURNING + VALUE(object) TYPE REF TO object. + METHODS constructor + IMPORTING + collection TYPE REF TO zCL_excel_COLLECTION. + PROTECTED SECTION. + PRIVATE SECTION. + DATA index TYPE i VALUE 0. + DATA collection TYPE REF TO zcl_excel_collection. +ENDCLASS. + + + +CLASS ZCL_EXCEL_COLLECTION_ITERATOR IMPLEMENTATION. + + + METHOD constructor . + me->collection = collection. + ENDMETHOD. + + + METHOD get_index . + index = me->index. + ENDMETHOD. + + + METHOD get_next . + DATA obj TYPE REF TO object. + index = index + 1. + object = collection->get( index ). + ENDMETHOD. + + + METHOD has_next. + DATA obj TYPE REF TO object. + obj = collection->get( index + 1 ). + has_next = boolc( obj IS NOT INITIAL ). + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_excel_collection_iterator.clas.xml b/src/zcl_excel_collection_iterator.clas.xml new file mode 100644 index 0000000..09546d0 --- /dev/null +++ b/src/zcl_excel_collection_iterator.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_EXCEL_COLLECTION_ITERATOR + E + abap2xlsx - Object Iterator + 1 + X + X + X + + + +