diff --git a/ApplicationCode/FileInterface/RifDerivedEnsembleReader.cpp b/ApplicationCode/FileInterface/RifDerivedEnsembleReader.cpp index c3c63b0bb9..3de8152683 100644 --- a/ApplicationCode/FileInterface/RifDerivedEnsembleReader.cpp +++ b/ApplicationCode/FileInterface/RifDerivedEnsembleReader.cpp @@ -24,7 +24,8 @@ /// //-------------------------------------------------------------------------------------------------- RifDerivedEnsembleReader::RifDerivedEnsembleReader( RimDerivedSummaryCase* derivedCase, - RifSummaryReaderInterface* sourceSummaryReader1 ) + RifSummaryReaderInterface* sourceSummaryReader1, + RifSummaryReaderInterface* sourceSummaryReader2 ) { CVF_ASSERT( derivedCase ); @@ -32,10 +33,20 @@ RifDerivedEnsembleReader::RifDerivedEnsembleReader( RimDerivedSummaryCase* d if ( sourceSummaryReader1 ) { - // TODO: This is assuming that the addresses of both reader interfaces are equal m_allResultAddresses = sourceSummaryReader1->allResultAddresses(); m_allErrorAddresses = sourceSummaryReader1->allErrorAddresses(); } + if ( sourceSummaryReader2 ) + { + for ( auto a : sourceSummaryReader2->allResultAddresses() ) + { + m_allResultAddresses.insert( a ); + } + for ( auto a : sourceSummaryReader2->allErrorAddresses() ) + { + m_allErrorAddresses.insert( a ); + } + } } //-------------------------------------------------------------------------------------------------- @@ -91,18 +102,3 @@ RiaEclipseUnitTools::UnitSystem RifDerivedEnsembleReader::unitSystem() const { return RiaEclipseUnitTools::UNITS_UNKNOWN; } - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RifDerivedEnsembleReader::updateData( RimSummaryCase* sumCase1, RimSummaryCase* sumCase2 ) -{ - m_allErrorAddresses.clear(); - m_allResultAddresses.clear(); - - if ( sumCase1 && sumCase1->summaryReader() ) - { - m_allErrorAddresses = sumCase1->summaryReader()->allErrorAddresses(); - m_allResultAddresses = sumCase1->summaryReader()->allResultAddresses(); - } -} diff --git a/ApplicationCode/FileInterface/RifDerivedEnsembleReader.h b/ApplicationCode/FileInterface/RifDerivedEnsembleReader.h index 316e4d5310..89eef093d8 100644 --- a/ApplicationCode/FileInterface/RifDerivedEnsembleReader.h +++ b/ApplicationCode/FileInterface/RifDerivedEnsembleReader.h @@ -30,15 +30,15 @@ class RimSummaryCase; class RifDerivedEnsembleReader : public RifSummaryReaderInterface { public: - RifDerivedEnsembleReader( RimDerivedSummaryCase* derivedCase, RifSummaryReaderInterface* sourceSummaryReader1 ); + RifDerivedEnsembleReader( RimDerivedSummaryCase* derivedCase, + RifSummaryReaderInterface* sourceSummaryReader1, + RifSummaryReaderInterface* sourceSummaryReader2 ); const std::vector& timeSteps( const RifEclipseSummaryAddress& resultAddress ) const override; bool values( const RifEclipseSummaryAddress& resultAddress, std::vector* values ) const override; std::string unitName( const RifEclipseSummaryAddress& resultAddress ) const override; RiaEclipseUnitTools::UnitSystem unitSystem() const override; - void updateData( RimSummaryCase* sumCase1, RimSummaryCase* sumCase2 ); - private: RimDerivedSummaryCase* m_derivedCase; }; diff --git a/ApplicationCode/ProjectDataModel/Summary/RimDerivedSummaryCase.cpp b/ApplicationCode/ProjectDataModel/Summary/RimDerivedSummaryCase.cpp index 25228a4f61..72f56965c9 100644 --- a/ApplicationCode/ProjectDataModel/Summary/RimDerivedSummaryCase.cpp +++ b/ApplicationCode/ProjectDataModel/Summary/RimDerivedSummaryCase.cpp @@ -235,7 +235,8 @@ QString RimDerivedSummaryCase::caseName() const //-------------------------------------------------------------------------------------------------- void RimDerivedSummaryCase::createSummaryReaderInterface() { - RifSummaryReaderInterface* summaryCase1Reader = nullptr; + RifSummaryReaderInterface* summaryCase1Reader1 = nullptr; + RifSummaryReaderInterface* summaryCase1Reader2 = nullptr; if ( m_summaryCase1 ) { if ( !m_summaryCase1->summaryReader() ) @@ -243,10 +244,19 @@ void RimDerivedSummaryCase::createSummaryReaderInterface() m_summaryCase1->createSummaryReaderInterface(); } - summaryCase1Reader = m_summaryCase1->summaryReader(); + summaryCase1Reader1 = m_summaryCase1->summaryReader(); + } + if ( m_summaryCase2 ) + { + if ( !m_summaryCase2->summaryReader() ) + { + m_summaryCase2->createSummaryReaderInterface(); + } + + summaryCase1Reader2 = m_summaryCase2->summaryReader(); } - m_reader.reset( new RifDerivedEnsembleReader( this, summaryCase1Reader ) ); + m_reader.reset( new RifDerivedEnsembleReader( this, summaryCase1Reader1, summaryCase1Reader2 ) ); } //-------------------------------------------------------------------------------------------------- @@ -329,15 +339,7 @@ void RimDerivedSummaryCase::fieldChangedByUi( const caf::PdmFieldHandle* changed bool reloadData = false; if ( changedField == &m_summaryCase2 || changedField == &m_summaryCase1 ) { - if ( !m_reader ) - { - createSummaryReaderInterface(); - } - - if ( m_reader ) - { - m_reader->updateData( m_summaryCase1(), m_summaryCase2() ); - } + createSummaryReaderInterface(); reloadData = true; }