diff --git a/src/io/inputs/data-series-csv-importer/DataSeriesRepoImporter.cpp b/src/io/inputs/data-series-csv-importer/DataSeriesRepoImporter.cpp index 7d7f8cf2d7..fe7c4f1147 100644 --- a/src/io/inputs/data-series-csv-importer/DataSeriesRepoImporter.cpp +++ b/src/io/inputs/data-series-csv-importer/DataSeriesRepoImporter.cpp @@ -19,6 +19,7 @@ ** along with Antares_Simulator. If not, see . */ #include +#include #include @@ -28,6 +29,12 @@ namespace Antares::IO::Inputs::DataSeriesCsvImporter { using namespace Optimisation::LinearProblemDataImpl; +bool hasRightExtension(const auto& e) +{ + auto ext = e.path().extension(); + return ext == ".csv" | ext == ".tsv"; +} + DataSeriesRepository DataSeriesRepoImporter::importFromDirectory(const std::filesystem::path& path, char csvSeparator) { @@ -35,19 +42,17 @@ DataSeriesRepository DataSeriesRepoImporter::importFromDirectory(const std::file { throw std::invalid_argument("Not a directory: " + path.string()); } + + auto paths = std::filesystem::directory_iterator{path}; + auto pathFilter = std::views::filter([](const auto& e) { return is_regular_file(e); }) + | std::views::filter([](const auto& e) { return hasRightExtension(e); }); + DataSeriesRepository repo{}; - for (const auto& entry: std::filesystem::directory_iterator(path)) + for (const auto& entry: paths | pathFilter) { - if (!is_regular_file(entry)) - { - continue; - } - if (entry.path().extension() == ".csv" || entry.path().extension() == ".tsv") - { - std::unique_ptr timeSeriesSet = std::make_unique( - TimeSeriesSetImporter::importFromFile(entry, csvSeparator)); - repo.addDataSeries(std::move(timeSeriesSet)); - } + std::unique_ptr timeSeriesSet = std::make_unique( + TimeSeriesSetImporter::importFromFile(entry, csvSeparator)); + repo.addDataSeries(std::move(timeSeriesSet)); } return repo; } @@ -116,7 +121,7 @@ TimeSeriesSet TimeSeriesSetImporter::importFromFile(const std::filesystem::path& // TODO: we may want to improve this by reading directly into the TimeSeriesSet object, or // by creating a specific IDataSeries implementation int nTimestamps = csvMatrix.size(); - TimeSeriesSet timeSeriesSet(path.stem(), nTimestamps); + TimeSeriesSet timeSeriesSet(path.stem().string(), nTimestamps); if (nTimestamps == 0) { return timeSeriesSet;