class DataElementProvider {

    public List<DataElement> provideElements(MetaColumnsTableModel tableModel, JTable table, int timePrecision)
    {
        List<DataElement> modified = New.list();

        List<DataElement> elements = getDataElementsToExport(tableModel, table, false, myExportModel.isIncludeMetaColumns(),
                myColorFormatter);
        for (DataElement element : elements)
        {
            if (element.getVisualizationState().isSelected() || !myExportModel.isSelectedRowsOnly())
            {
                Map<String, Object> extraValues = New.map();
                addWkt(element, extraValues);
                separateDateAndTime(element, extraValues, timePrecision);
                formatLatLon(element, extraValues);
                if (!extraValues.isEmpty())
                {
                    element = createDelegateElement(element, new ExtraColumnsMetaDataProvider(element.getMetaData(), extraValues));
                }

                modified.add(element);
            }
        }

        return modified;
    }

    public  DataElementProvider(ExportOptionsModel exportModel, DataElementCache elementCache);

}