#3052 Summary Plot : Make name helper class more robust

This commit is contained in:
Magne Sjaastad 2018-06-18 21:58:32 +02:00
parent 5059201126
commit 174538bb92
3 changed files with 60 additions and 17 deletions

View File

@ -1578,8 +1578,8 @@ void RimSummaryPlot::updateNameHelperWithCurveData(RimSummaryPlotNameHelper* nam
nameHelper->clear(); nameHelper->clear();
nameHelper->appendAddresses(addresses); nameHelper->appendAddresses(addresses);
nameHelper->appendSummaryCases(sumCases); nameHelper->setSummaryCases(sumCases);
nameHelper->appendEnsembleCases(ensembleCases); nameHelper->setEnsembleCases(ensembleCases);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -36,7 +36,7 @@ RimSummaryPlotNameHelper::RimSummaryPlotNameHelper() {}
void RimSummaryPlotNameHelper::clear() void RimSummaryPlotNameHelper::clear()
{ {
m_summaryCases.clear(); m_summaryCases.clear();
m_ensembleCases.clear();
m_analyzer.clear(); m_analyzer.clear();
clearTitleSubStrings(); clearTitleSubStrings();
@ -55,13 +55,15 @@ void RimSummaryPlotNameHelper::appendAddresses(const std::vector<RifEclipseSumma
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryPlotNameHelper::appendSummaryCases(const std::vector<RimSummaryCase*>& summaryCases) void RimSummaryPlotNameHelper::setSummaryCases(const std::vector<RimSummaryCase*>& summaryCases)
{ {
m_summaryCases.clear(); m_summaryCases.clear();
for (auto summaryCase : summaryCases) m_summaryCases.resize(summaryCases.size());
for (size_t i = 0; i < summaryCases.size(); i++)
{ {
if (summaryCase) m_summaryCases.insert(summaryCase); m_summaryCases[i] = summaryCases[i];
} }
extractPlotTitleSubStrings(); extractPlotTitleSubStrings();
@ -70,13 +72,15 @@ void RimSummaryPlotNameHelper::appendSummaryCases(const std::vector<RimSummaryCa
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimSummaryPlotNameHelper::appendEnsembleCases(const std::vector<RimSummaryCaseCollection*>& ensembleCases) void RimSummaryPlotNameHelper::setEnsembleCases(const std::vector<RimSummaryCaseCollection*>& ensembleCases)
{ {
m_ensembleCases.clear(); m_ensembleCases.clear();
for (auto ensembleCase : ensembleCases) m_ensembleCases.resize(ensembleCases.size());
for (size_t i = 0; i < ensembleCases.size(); i++)
{ {
if (ensembleCase) m_ensembleCases.insert(ensembleCase); m_ensembleCases[i] = ensembleCases[i];
} }
extractPlotTitleSubStrings(); extractPlotTitleSubStrings();
@ -216,21 +220,54 @@ void RimSummaryPlotNameHelper::extractPlotTitleSubStrings()
} }
} }
if (m_summaryCases.size() == 1 && m_ensembleCases.empty()) auto summaryCases = setOfSummaryCases();
auto ensembleCases = setOfEnsembleCases();
if (summaryCases.size() == 1 && ensembleCases.empty())
{ {
auto summaryCase = *(m_summaryCases.begin()); auto summaryCase = *(summaryCases.begin());
if (summaryCase) if (summaryCase)
{ {
m_titleCaseName = summaryCase->caseName(); m_titleCaseName = summaryCase->caseName();
} }
} }
else if (m_ensembleCases.size() == 1 && m_summaryCases.empty()) else if (ensembleCases.size() == 1 && summaryCases.empty())
{ {
auto ensembleCase = *(m_ensembleCases.begin()); auto ensembleCase = *(ensembleCases.begin());
if (ensembleCase) if (ensembleCase)
{ {
m_titleCaseName = ensembleCase->name(); m_titleCaseName = ensembleCase->name();
} }
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<RimSummaryCase*> RimSummaryPlotNameHelper::setOfSummaryCases() const
{
std::set<RimSummaryCase*> summaryCases;
for (const auto& sumCase : m_summaryCases)
{
if (sumCase) summaryCases.insert(sumCase);
}
return summaryCases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::set<RimSummaryCaseCollection*> RimSummaryPlotNameHelper::setOfEnsembleCases() const
{
std::set<RimSummaryCaseCollection*> ensembleCases;
for (const auto& ensemble : m_ensembleCases)
{
if (ensemble) ensembleCases.insert(ensemble);
}
return ensembleCases;
}

View File

@ -22,6 +22,8 @@
#include "RifEclipseSummaryAddress.h" #include "RifEclipseSummaryAddress.h"
#include "cafPdmPointer.h"
#include <QString> #include <QString>
#include <string> #include <string>
@ -42,8 +44,8 @@ public:
void clear(); void clear();
void appendAddresses(const std::vector<RifEclipseSummaryAddress>& addresses); void appendAddresses(const std::vector<RifEclipseSummaryAddress>& addresses);
void appendSummaryCases(const std::vector<RimSummaryCase*>& summaryCases); void setSummaryCases(const std::vector<RimSummaryCase*>& summaryCases);
void appendEnsembleCases(const std::vector<RimSummaryCaseCollection*>& ensembleCases); void setEnsembleCases(const std::vector<RimSummaryCaseCollection*>& ensembleCases);
QString plotTitle() const; QString plotTitle() const;
@ -57,11 +59,15 @@ private:
void clearTitleSubStrings(); void clearTitleSubStrings();
void extractPlotTitleSubStrings(); void extractPlotTitleSubStrings();
std::set<RimSummaryCase*> setOfSummaryCases() const;
std::set<RimSummaryCaseCollection*> setOfEnsembleCases() const;
private: private:
RiaSummaryCurveAnalyzer m_analyzer; RiaSummaryCurveAnalyzer m_analyzer;
std::set<RimSummaryCase*> m_summaryCases; std::vector<caf::PdmPointer<RimSummaryCase>> m_summaryCases;
std::set<RimSummaryCaseCollection*> m_ensembleCases; std::vector<caf::PdmPointer<RimSummaryCaseCollection>> m_ensembleCases;
std::string m_titleQuantity; std::string m_titleQuantity;
std::string m_titleWellName; std::string m_titleWellName;