From c4c40d2b000626505dceffbc369d859b72ca16f5 Mon Sep 17 00:00:00 2001 From: Florian OMNES Date: Thu, 30 Jan 2025 15:10:38 +0100 Subject: [PATCH] Define exception classes as subclasses --- src/solver/modeler/dataSeries/CMakeLists.txt | 5 +-- .../modeler/dataSeries/dataSeriesRepo.cpp | 8 ++--- .../dataSeries/dataSeriesRepoExceptions.cpp | 10 +++--- .../modeler/dataSeries/dataSeriesRepo.h | 20 +++++++++++ .../dataSeries/dataSeriesRepoExceptions.h | 23 ------------- .../modeler/dataSeries/scenarioGroupRepo.h | 20 +++++++++++ .../dataSeries/scenarioGroupRepoExceptions.h | 26 --------------- .../solver/modeler/dataSeries/timeSeriesSet.h | 28 ++++++++++++++++ .../dataSeries/timeSeriesSetExceptions.h | 33 ------------------- .../modeler/dataSeries/scenarioGroupRepo.cpp | 8 ++--- .../scenarioGroupRepoExceptions.cpp | 12 +++---- .../modeler/dataSeries/timeSeriesSet.cpp | 10 +++--- .../dataSeries/timeSeriesSetExceptions.cpp | 16 ++++----- 13 files changed, 98 insertions(+), 121 deletions(-) delete mode 100644 src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h delete mode 100644 src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h delete mode 100644 src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h diff --git a/src/solver/modeler/dataSeries/CMakeLists.txt b/src/solver/modeler/dataSeries/CMakeLists.txt index d3c6b21d5e..bb0c961f57 100644 --- a/src/solver/modeler/dataSeries/CMakeLists.txt +++ b/src/solver/modeler/dataSeries/CMakeLists.txt @@ -4,17 +4,14 @@ set(SRC_DATA_SERIES include/antares/solver/modeler/dataSeries/timeSeriesSet.h timeSeriesSet.cpp - include/antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h timeSeriesSetExceptions.cpp include/antares/solver/modeler/dataSeries/dataSeriesRepo.h dataSeriesRepo.cpp - include/antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h - dataSeriesRepoExceptions.cpp + dataSeriesRepoExceptions.cpp include/antares/solver/modeler/dataSeries/scenarioGroupRepo.h scenarioGroupRepo.cpp - include/antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h scenarioGroupRepoExceptions.cpp include/antares/solver/modeler/dataSeries/linearProblemData.h diff --git a/src/solver/modeler/dataSeries/dataSeriesRepo.cpp b/src/solver/modeler/dataSeries/dataSeriesRepo.cpp index 6be71f7479..41c5131168 100644 --- a/src/solver/modeler/dataSeries/dataSeriesRepo.cpp +++ b/src/solver/modeler/dataSeries/dataSeriesRepo.cpp @@ -2,8 +2,6 @@ #include -#include "antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h" - namespace Antares::Solver::Modeler::DataSeries { void DataSeriesRepository::addDataSeries(std::unique_ptr dataSeries) @@ -11,7 +9,7 @@ void DataSeriesRepository::addDataSeries(std::unique_ptr dataSeries std::string name = dataSeries->name(); if (dataSeries_.contains(name)) { - throw DataSeriesRepo_DSalreadyExists(name); + throw DataSeriesAlreadyExists(name); } dataSeries_[name] = std::move(dataSeries); } @@ -20,11 +18,11 @@ IDataSeries& DataSeriesRepository::getDataSeries(const std::string& setId) { if (dataSeries_.empty()) { - throw DataSeriesRepo_Empty(); + throw Empty(); } if (!dataSeries_.contains(setId)) { - throw DataSeriesRepo_DataSeriesNotExist(setId); + throw DataSeriesNotExist(setId); } return *(dataSeries_[setId]); } diff --git a/src/solver/modeler/dataSeries/dataSeriesRepoExceptions.cpp b/src/solver/modeler/dataSeries/dataSeriesRepoExceptions.cpp index 9e7a1e5eef..09a4d55278 100644 --- a/src/solver/modeler/dataSeries/dataSeriesRepoExceptions.cpp +++ b/src/solver/modeler/dataSeries/dataSeriesRepoExceptions.cpp @@ -1,20 +1,20 @@ -#include "antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h" - #include +#include "antares/solver/modeler/dataSeries/dataSeriesRepo.h" + namespace Antares::Solver::Modeler::DataSeries { -DataSeriesRepo_Empty::DataSeriesRepo_Empty(): +DataSeriesRepository::Empty::Empty(): std::invalid_argument("Data series repo is empty, and somebody requests data from it") { } -DataSeriesRepo_DataSeriesNotExist::DataSeriesRepo_DataSeriesNotExist(const std::string setId): +DataSeriesRepository::DataSeriesNotExist::DataSeriesNotExist(const std::string& setId): std::invalid_argument("Data series repo : data series '" + setId + "' does not exist") { } -DataSeriesRepo_DSalreadyExists::DataSeriesRepo_DSalreadyExists(const std::string setId): +DataSeriesRepository::DataSeriesAlreadyExists::DataSeriesAlreadyExists(const std::string& setId): std::invalid_argument("Data series repo : data series '" + setId + "' already exists") { } diff --git a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepo.h b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepo.h index 9eb8bc8a09..352899ec4d 100644 --- a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepo.h +++ b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepo.h @@ -18,6 +18,26 @@ class DataSeriesRepository private: std::map> dataSeries_; + +public: + // Exception classes + class Empty: public std::invalid_argument + { + public: + Empty(); + }; + + class DataSeriesNotExist: public std::invalid_argument + { + public: + explicit DataSeriesNotExist(const std::string&); + }; + + class DataSeriesAlreadyExists: public std::invalid_argument + { + public: + explicit DataSeriesAlreadyExists(const std::string&); + }; }; } // namespace Antares::Solver::Modeler::DataSeries diff --git a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h deleted file mode 100644 index 6512ea098a..0000000000 --- a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/dataSeriesRepoExceptions.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once -#include - -namespace Antares::Solver::Modeler::DataSeries -{ -class DataSeriesRepo_Empty: public std::invalid_argument -{ -public: - DataSeriesRepo_Empty(); -}; - -class DataSeriesRepo_DataSeriesNotExist: public std::invalid_argument -{ -public: - DataSeriesRepo_DataSeriesNotExist(const std::string setId); -}; - -class DataSeriesRepo_DSalreadyExists: public std::invalid_argument -{ -public: - DataSeriesRepo_DSalreadyExists(const std::string setId); -}; -} // namespace Antares::Solver::Modeler::DataSeries diff --git a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepo.h b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepo.h index dd263bfc0b..904f19cffb 100644 --- a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepo.h +++ b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepo.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include namespace Antares::Solver::Modeler::DataSeries @@ -15,5 +16,24 @@ class ScenarioGroupRepository private: std::map> scenarioGroups_; + +public: + class AlreadyExists: public std::invalid_argument + { + public: + explicit AlreadyExists(const std::string& groupId); + }; + + class DoesNotExist: public std::invalid_argument + { + public: + explicit DoesNotExist(const std::string& groupId); + }; + + class ScenarioNotExist: public std::invalid_argument + { + public: + explicit ScenarioNotExist(const std::string& groupId, unsigned scenario); + }; }; } // namespace Antares::Solver::Modeler::DataSeries diff --git a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h deleted file mode 100644 index 99455df850..0000000000 --- a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include - -namespace Antares::Solver::Modeler::DataSeries -{ - -class ScGroup_AlreadyExists: public std::invalid_argument -{ -public: - ScGroup_AlreadyExists(const std::string& groupId); -}; - -class ScGroup_DoesNotExist: public std::invalid_argument -{ -public: - ScGroup_DoesNotExist(const std::string& groupId); -}; - -class ScGroup_ScenarioNotExist: public std::invalid_argument -{ -public: - ScGroup_ScenarioNotExist(const std::string& groupId, const unsigned scenario); -}; - -} // namespace Antares::Solver::Modeler::DataSeries diff --git a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSet.h b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSet.h index b868416a38..f97e3dc355 100644 --- a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSet.h +++ b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSet.h @@ -1,3 +1,4 @@ +#include #include #include @@ -15,6 +16,33 @@ class TimeSeriesSet: public IDataSeries private: unsigned height_ = 0; std::vector> tsSet_; + +public: + class AddTSofWrongSize: public std::invalid_argument + { + public: + explicit AddTSofWrongSize(const std::string& name, + const size_t& tsSize, + const unsigned& height); + }; + + class Empty: public std::invalid_argument + { + public: + explicit Empty(const std::string& name); + }; + + class RankTooBig: public std::invalid_argument + { + public: + explicit RankTooBig(const std::string& name, unsigned rank); + }; + + class HourTooBig: public std::invalid_argument + { + public: + explicit HourTooBig(const std::string& name, unsigned hour); + }; }; } // namespace Antares::Solver::Modeler::DataSeries diff --git a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h b/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h deleted file mode 100644 index 90256aa671..0000000000 --- a/src/solver/modeler/dataSeries/include/antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include - -namespace Antares::Solver::Modeler::DataSeries -{ -class TSset_AddTSofWrongSize: public std::invalid_argument -{ -public: - explicit TSset_AddTSofWrongSize(const std::string& name, - const size_t& tsSize, - const unsigned& height); -}; - -class TSset_Empty: public std::invalid_argument -{ -public: - explicit TSset_Empty(const std::string& name); -}; - -class TSset_RankTooBig: public std::invalid_argument -{ -public: - explicit TSset_RankTooBig(const std::string& name, unsigned rank); -}; - -class TSset_HourTooBig: public std::invalid_argument -{ -public: - explicit TSset_HourTooBig(const std::string& name, unsigned hour); -}; - -} // namespace Antares::Solver::Modeler::DataSeries diff --git a/src/solver/modeler/dataSeries/scenarioGroupRepo.cpp b/src/solver/modeler/dataSeries/scenarioGroupRepo.cpp index 4a30d42f55..615cd148bc 100644 --- a/src/solver/modeler/dataSeries/scenarioGroupRepo.cpp +++ b/src/solver/modeler/dataSeries/scenarioGroupRepo.cpp @@ -2,8 +2,6 @@ #include -#include "antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h" - namespace Antares::Solver::Modeler::DataSeries { void ScenarioGroupRepository::addPairScenarioRankToGroup( @@ -12,7 +10,7 @@ void ScenarioGroupRepository::addPairScenarioRankToGroup( { if (scenarioGroups_.contains(groupId)) { - throw ScGroup_AlreadyExists(groupId); + throw AlreadyExists(groupId); } scenarioGroups_[groupId] = {scenarioToRank}; } @@ -21,12 +19,12 @@ unsigned ScenarioGroupRepository::getDataRank(const std::string& groupId, const { if (!scenarioGroups_.contains(groupId)) { - throw ScGroup_DoesNotExist(groupId); + throw DoesNotExist(groupId); } if (!scenarioGroups_.at(groupId).contains(scenario)) { - throw ScGroup_ScenarioNotExist(groupId, scenario); + throw ScenarioNotExist(groupId, scenario); } return scenarioGroups_.at(groupId).at(scenario); diff --git a/src/solver/modeler/dataSeries/scenarioGroupRepoExceptions.cpp b/src/solver/modeler/dataSeries/scenarioGroupRepoExceptions.cpp index 05d1295a0d..2fb5125dc9 100644 --- a/src/solver/modeler/dataSeries/scenarioGroupRepoExceptions.cpp +++ b/src/solver/modeler/dataSeries/scenarioGroupRepoExceptions.cpp @@ -1,22 +1,22 @@ -#include "antares/solver/modeler/dataSeries/scenarioGroupRepoExceptions.h" - #include +#include "antares/solver/modeler/dataSeries/scenarioGroupRepo.h" + namespace Antares::Solver::Modeler::DataSeries { -ScGroup_AlreadyExists::ScGroup_AlreadyExists(const std::string& groupId): +ScenarioGroupRepository::AlreadyExists::AlreadyExists(const std::string& groupId): std::invalid_argument("Scenario group '" + groupId + "' already exists in group repo.") { } -ScGroup_DoesNotExist::ScGroup_DoesNotExist(const std::string& groupId): +ScenarioGroupRepository::DoesNotExist::DoesNotExist(const std::string& groupId): std::invalid_argument("Scenario group '" + groupId + "' does not exist in group repo.") { } -ScGroup_ScenarioNotExist::ScGroup_ScenarioNotExist(const std::string& groupId, - const unsigned scenario): +ScenarioGroupRepository::ScenarioNotExist::ScenarioNotExist(const std::string& groupId, + const unsigned scenario): std::invalid_argument("In scenario group '" + groupId + "', scenario '" + std::to_string(scenario) + "' does not exist.") { diff --git a/src/solver/modeler/dataSeries/timeSeriesSet.cpp b/src/solver/modeler/dataSeries/timeSeriesSet.cpp index 2cefe5710e..3c836179de 100644 --- a/src/solver/modeler/dataSeries/timeSeriesSet.cpp +++ b/src/solver/modeler/dataSeries/timeSeriesSet.cpp @@ -3,8 +3,6 @@ #include #include -#include "antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h" - namespace Antares::Solver::Modeler::DataSeries { TimeSeriesSet::TimeSeriesSet(std::string name, unsigned int height): @@ -17,7 +15,7 @@ void TimeSeriesSet::add(const std::vector& ts) { if (ts.size() != height_) { - throw TSset_AddTSofWrongSize(name(), ts.size(), height_); + throw AddTSofWrongSize(name(), ts.size(), height_); } tsSet_.push_back(std::move(ts)); } @@ -26,17 +24,17 @@ double TimeSeriesSet::getData(unsigned rank, unsigned hour) { if (tsSet_.empty()) { - throw TSset_Empty(name()); + throw Empty(name()); } if (rank > tsSet_.size() - 1) { - throw TSset_RankTooBig(name(), rank); + throw RankTooBig(name(), rank); } if (hour > height_ - 1) { - throw TSset_HourTooBig(name(), hour); + throw HourTooBig(name(), hour); } return tsSet_[rank][hour]; diff --git a/src/solver/modeler/dataSeries/timeSeriesSetExceptions.cpp b/src/solver/modeler/dataSeries/timeSeriesSetExceptions.cpp index 4eb9f2ddb1..8d724da29d 100644 --- a/src/solver/modeler/dataSeries/timeSeriesSetExceptions.cpp +++ b/src/solver/modeler/dataSeries/timeSeriesSetExceptions.cpp @@ -1,31 +1,31 @@ -#include "antares/solver/modeler/dataSeries/timeSeriesSetExceptions.h" - #include +#include "antares/solver/modeler/dataSeries/timeSeriesSet.h" + namespace Antares::Solver::Modeler::DataSeries { -TSset_AddTSofWrongSize::TSset_AddTSofWrongSize(const std::string& name, - const size_t& tsSize, - const unsigned& height): +TimeSeriesSet::AddTSofWrongSize::AddTSofWrongSize(const std::string& name, + const size_t& tsSize, + const unsigned& height): std::invalid_argument("TS set '" + name + "' : add a TS of size " + std::to_string(tsSize) + " in a set of height " + std::to_string(height)) { } -TSset_Empty::TSset_Empty(const std::string& name): +TimeSeriesSet::Empty::Empty(const std::string& name): std::invalid_argument("TS set '" + name + "' : empty, requesting a value makes no sense") { } -TSset_RankTooBig::TSset_RankTooBig(const std::string& name, unsigned rank): +TimeSeriesSet::RankTooBig::RankTooBig(const std::string& name, unsigned rank): std::invalid_argument("TS set '" + name + "' : rank " + std::to_string(rank) + " exceeds TS set's width") { } -TSset_HourTooBig::TSset_HourTooBig(const std::string& name, unsigned int hour): +TimeSeriesSet::HourTooBig::HourTooBig(const std::string& name, unsigned int hour): std::invalid_argument("TS set '" + name + "' : hour " + std::to_string(hour) + " exceeds TS set's height") {