From 779b5f87ce09a12194a4c6aca5043be98081648d Mon Sep 17 00:00:00 2001 From: guilpier-code <62292552+guilpier-code@users.noreply.github.com> Date: Mon, 10 Feb 2025 17:48:08 +0100 Subject: [PATCH] Trial for improve issue 2033 (#2629) Co-authored-by: Florian OMNES --- .../DataSeriesRepoImporter.cpp | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/io/inputs/data-series-csv-importer/DataSeriesRepoImporter.cpp b/src/io/inputs/data-series-csv-importer/DataSeriesRepoImporter.cpp index ee95a74774..c73b43c295 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 std::filesystem::directory_entry& e) +{ + auto ext = e.path().extension(); + return (ext == ".csv") || (ext == ".tsv"); +} + DataSeriesRepository DataSeriesRepoImporter::importFromDirectory(const std::filesystem::path& path, char csvSeparator) { @@ -35,19 +42,19 @@ DataSeriesRepository DataSeriesRepoImporter::importFromDirectory(const std::file { throw std::invalid_argument("Not a directory: " + path.string()); } + + using std::views::filter; + auto pathFilter = filter(static_cast( + &std::filesystem::is_regular_file)) + | filter(&hasRightExtension); + DataSeriesRepository repo{}; - for (const auto& entry: std::filesystem::directory_iterator(path)) + for (auto paths = std::filesystem::directory_iterator{path}; + 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; }