From cbadfd456a2021ff6c5de47b900674206b8c546f Mon Sep 17 00:00:00 2001 From: Jon Jenssen Date: Mon, 14 Sep 2020 17:06:16 +0200 Subject: [PATCH] Do not allow opening the same odb file twice. The odb reader does not support that. --- .../Application/RiaApplication.cpp | 23 +++++++++++++------ .../ProjectDataModel/RimGeoMechModels.cpp | 9 ++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index 58ed4bc1ff..5260e8cca5 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -853,15 +853,8 @@ bool RiaApplication::openOdbCaseFromFile( const QString& fileName, bool applyTim QFileInfo gridFileName( fileName ); QString caseName = gridFileName.completeBaseName(); - RimGeoMechCase* geoMechCase = new RimGeoMechCase(); - geoMechCase->setGridFileName( fileName ); - geoMechCase->caseUserDescription = caseName; - geoMechCase->setApplyTimeFilter( applyTimeStepFilter ); - m_project->assignCaseIdToCase( geoMechCase ); - RimGeoMechModels* geoMechModelCollection = m_project->activeOilField() ? m_project->activeOilField()->geoMechModels() : nullptr; - // Create the geoMech model container if it is not there already if ( geoMechModelCollection == nullptr ) { @@ -869,6 +862,22 @@ bool RiaApplication::openOdbCaseFromFile( const QString& fileName, bool applyTim m_project->activeOilField()->geoMechModels = geoMechModelCollection; } + // Check if the file is already open, the odb reader does not support opening the same file twice very well + for ( auto gmcase : geoMechModelCollection->cases() ) + { + if ( gmcase->gridFileName() == fileName ) + { + RiaLogging::warning( "File has already been opened. Cannot open the file twice! - " + fileName ); + return false; + } + } + + RimGeoMechCase* geoMechCase = new RimGeoMechCase(); + geoMechCase->setGridFileName( fileName ); + geoMechCase->caseUserDescription = caseName; + geoMechCase->setApplyTimeFilter( applyTimeStepFilter ); + m_project->assignCaseIdToCase( geoMechCase ); + RimGeoMechView* riv = geoMechCase->createAndAddReservoirView(); caf::ProgressInfo progress( 11, "Loading Case" ); progress.setNextProgressIncrement( 10 ); diff --git a/ApplicationCode/ProjectDataModel/RimGeoMechModels.cpp b/ApplicationCode/ProjectDataModel/RimGeoMechModels.cpp index 9032564dc9..8fed6946fe 100644 --- a/ApplicationCode/ProjectDataModel/RimGeoMechModels.cpp +++ b/ApplicationCode/ProjectDataModel/RimGeoMechModels.cpp @@ -78,6 +78,15 @@ RimGeoMechCase* RimGeoMechModels::copyCase( RimGeoMechCase* thecase, const QStri { std::vector newcases; + for ( auto gmcase : m_cases() ) + { + if ( gmcase->gridFileName() == newInputFileName ) + { + RiaLogging::warning( "File has already been opened. Cannot open the file twice! - " + newInputFileName ); + return nullptr; + } + } + RimGeoMechCase* copy = thecase->createCopy( newInputFileName ); if ( !copy ) {