Interface DataTable.TableConverter

  • All Known Implementing Classes:
    DataTableTypeRegistryTableConverter
    Enclosing class:
    DataTable

    public static interface DataTable.TableConverter
    Converts a DataTable to another type.

    There are three ways in which a table might be mapped to a certain type. The table converter considers the possible conversions in this order:

    1. Using the whole table to create a single instance.
    2. Using individual rows to create a collection of instances. The first row may be used as header.
    3. Using individual cells to a create a collection of instances.
    • Method Detail

      • convert

        <T> T convert​(DataTable dataTable,
                      Type type)
        Converts a DataTable to another type.

        Delegates to toList, toLists, toMap and toMaps for List<T>, List<List<T>>, Map<K,V> and List<Map<K,V>> respectively.

        Type Parameters:
        T - the type to convert to
        Parameters:
        dataTable - the table to convert
        type - the type to convert to
        Returns:
        an object of type
      • convert

        <T> T convert​(DataTable dataTable,
                      Type type,
                      boolean transposed)
        Converts a DataTable to another type.

        Delegates to toList, toLists, toMap and toMaps for List<T>, List<List<T>>, Map<K,V> and List<Map<K,V>> respectively.

        Type Parameters:
        T - the type to convert to
        Parameters:
        dataTable - the table to convert
        type - the type to convert to
        transposed - whether the table should be transposed first.
        Returns:
        an object of type
      • toList

        <T> List<T> toList​(DataTable dataTable,
                           Type itemType)
        Converts a DataTable to a list.

        A table converter may either map each row or each individual cell to a list element.

        For example:

         | Annie M. G. Schmidt | 1911-03-20 |
         | Roald Dahl          | 1916-09-13 |
        
         convert.toList(table, String.class);
         
        can become
          [ "Annie M. G. Schmidt", "1911-03-20", "Roald Dahl", "1916-09-13" ]
         

        While:

           convert.toList(table, Author.class);
         

        can become:

         [
           Author[ name: Annie M. G. Schmidt, birthDate: 1911-03-20 ],
           Author[ name: Roald Dahl,          birthDate: 1916-09-13 ]
         ]
         

        Likewise:

          | firstName   | lastName | birthDate  |
          | Annie M. G. | Schmidt  | 1911-03-20 |
          | Roald       | Dahl     | 1916-09-13 |
        
         convert.toList(table, Authors.class);
         
        can become:
          [
           Author[ firstName: Annie M. G., lastName: Schmidt,  birthDate: 1911-03-20 ],
           Author[ firstName: Roald,       lastName: Dahl,     birthDate: 1916-09-13 ]
          ]
         
        Type Parameters:
        T - the type to convert to
        Parameters:
        dataTable - the table to convert
        itemType - the list item type to convert to
        Returns:
        a list of objects of itemType
      • toLists

        <T> List<List<T>> toLists​(DataTable dataTable,
                                  Type itemType)
        Converts a DataTable to a list of lists.

        Each row maps to a list, each table cell a list entry.

        For example:

         | Annie M. G. Schmidt | 1911-03-20 |
         | Roald Dahl          | 1916-09-13 |
        
         convert.toLists(table, String.class);
         
        can become
          [
            [ "Annie M. G. Schmidt", "1911-03-20" ],
            [ "Roald Dahl",          "1916-09-13" ]
          ]
         

        Type Parameters:
        T - the type to convert to
        Parameters:
        dataTable - the table to convert
        itemType - the list item type to convert to
        Returns:
        a list of lists of objects of itemType
      • toMap

        <K,​V> Map<K,​V> toMap​(DataTable dataTable,
                                         Type keyType,
                                         Type valueType)
        Converts a DataTable to a map.

        The left column of the table is used to instantiate the key values. The other columns are used to instantiate the values.

        For example:

         | 4a1 | Annie M. G. Schmidt | 1911-03-20 |
         | c92 | Roald Dahl          | 1916-09-13 |
        
         convert.toMap(table, Id.class, Authors.class);
         
        can become:
          {
           Id[ 4a1 ]: Author[ name: Annie M. G. Schmidt, birthDate: 1911-03-20 ],
           Id[ c92 ]: Author[ name: Roald Dahl,          birthDate: 1916-09-13 ]
          }
         

        The header cells may be used to map values into the types. When doing so the first header cell may be left blank.

        For example:

         |     | firstName   | lastName | birthDate  |
         | 4a1 | Annie M. G. | Schmidt  | 1911-03-20 |
         | c92 | Roald       | Dahl     | 1916-09-13 |
        
         convert.toMap(table, Id.class, Authors.class);
         
        can becomes:
          {
           Id[ 4a1 ]: Author[ firstName: Annie M. G., lastName: Schmidt, birthDate: 1911-03-20 ],
           Id[ c92 ]: Author[ firstName: Roald,       lastName: Dahl,    birthDate: 1916-09-13 ]
          }
         
        Type Parameters:
        K - the key type to convert to
        V - the value type to convert to
        Parameters:
        dataTable - the table to convert
        keyType - the key type to convert to
        valueType - the value to convert to
        Returns:
        a map of keyType valueType
      • toMaps

        <K,​V> List<Map<K,​V>> toMaps​(DataTable dataTable,
                                                Type keyType,
                                                Type valueType)
        Converts a DataTable to a list of maps.

        Each map represents a row in the table. The map keys are the column headers.

        For example:

         | firstName   | lastName | birthDate  |
         | Annie M. G. | Schmidt  | 1911-03-20 |
         | Roald       | Dahl     | 1916-09-13 |
         
        can become:
          [
           {firstName: Annie M. G., lastName: Schmidt, birthDate: 1911-03-20 }
           {firstName: Roald,       lastName: Dahl,    birthDate: 1916-09-13 }
          ]
         
        Type Parameters:
        K - the key type to convert to
        V - the value type to convert to
        Parameters:
        dataTable - the table to convert
        keyType - the key type to convert to
        valueType - the value to convert to
        Returns:
        a list of maps of keyType valueType