diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp index 704a1517c9..5d64d76437 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.cpp @@ -72,6 +72,7 @@ RimEclipseResultCase::RimEclipseResultCase() : m_gridAndWellDataIsReadFromFile( false ) , m_activeCellInfoIsReadFromFile( false ) , m_useOpmRftReader( true ) + , m_rftDataIsReadFromFile( false ) { CAF_PDM_InitScriptableObject( "Eclipse Case", ":/Case48x48.png", "", "The Regular Eclipse Results Case" ); @@ -205,23 +206,7 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter m_gridAndWellDataIsReadFromFile = true; m_activeCellInfoIsReadFromFile = true; - QFileInfo eclipseCaseFileInfo( gridFileName() ); - QString rftFileName = eclipseCaseFileInfo.path() + "/" + eclipseCaseFileInfo.completeBaseName() + ".RFT"; - QFileInfo rftFileInfo( rftFileName ); - - if ( rftFileInfo.exists() ) - { - RiaLogging::info( QString( "RFT file found" ) ); - - if ( m_useOpmRftReader ) - { - m_readerOpmRft = new RifReaderOpmRft( rftFileInfo.filePath() ); - } - else - { - m_readerEclipseRft = new RifReaderEclipseRft( rftFileInfo.filePath() ); - } - } + ensureRftDataIsImported(); if ( m_flowDiagSolutions.empty() ) { @@ -358,6 +343,34 @@ void RimEclipseResultCase::loadAndUpdateSourSimData() } } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimEclipseResultCase::ensureRftDataIsImported() +{ + if ( m_rftDataIsReadFromFile ) return; + + QFileInfo eclipseCaseFileInfo( gridFileName() ); + QString rftFileName = eclipseCaseFileInfo.path() + "/" + eclipseCaseFileInfo.completeBaseName() + ".RFT"; + QFileInfo rftFileInfo( rftFileName ); + + if ( rftFileInfo.exists() ) + { + RiaLogging::info( QString( "RFT file found" ) ); + + if ( m_useOpmRftReader ) + { + m_readerOpmRft = new RifReaderOpmRft( rftFileInfo.filePath() ); + } + else + { + m_readerEclipseRft = new RifReaderEclipseRft( rftFileInfo.filePath() ); + } + } + + m_rftDataIsReadFromFile = true; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -535,6 +548,8 @@ RigFlowDiagSolverInterface* RimEclipseResultCase::flowDiagSolverInterface() //-------------------------------------------------------------------------------------------------- RifReaderRftInterface* RimEclipseResultCase::rftReader() { + ensureRftDataIsImported(); + if ( m_useOpmRftReader ) return m_readerOpmRft.p(); return m_readerEclipseRft.p(); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h index cdaad13290..0c1b77bc89 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseResultCase.h @@ -81,6 +81,7 @@ protected: private: void loadAndUpdateSourSimData(); + void ensureRftDataIsImported(); private: cvf::ref createMockModel( QString modelName ); @@ -100,4 +101,5 @@ private: bool m_gridAndWellDataIsReadFromFile; bool m_activeCellInfoIsReadFromFile; bool m_useOpmRftReader; + bool m_rftDataIsReadFromFile; };