#4773 Ensemble RFT: load formation file when loading observed data

This commit is contained in:
Gaute Lindkvist 2019-09-26 15:43:13 +02:00
parent 912e2063df
commit 79da8ba5b5
3 changed files with 58 additions and 31 deletions

View File

@ -40,6 +40,26 @@
CAF_CMD_SOURCE_INIT( RicImportFormationNamesFeature, "RicImportFormationNamesFeature" ); CAF_CMD_SOURCE_INIT( RicImportFormationNamesFeature, "RicImportFormationNamesFeature" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimFormationNames* RicImportFormationNamesFeature::importFormationFiles( const QStringList& fileNames )
{
RimProject* proj = RiaApplication::instance()->project();
RimFormationNamesCollection* fomNameColl = proj->activeOilField()->formationNamesCollection();
if ( !fomNameColl )
{
fomNameColl = new RimFormationNamesCollection;
proj->activeOilField()->formationNamesCollection = fomNameColl;
}
// For each file, find existing Formation names item, or create new
RimFormationNames* formationNames = fomNameColl->importFiles( fileNames );
fomNameColl->updateConnectedEditors();
return formationNames;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -67,42 +87,35 @@ void RicImportFormationNamesFeature::onActionTriggered( bool isChecked )
app->setLastUsedDialogDirectory( "BINARY_GRID", QFileInfo( fileNames.last() ).absolutePath() ); app->setLastUsedDialogDirectory( "BINARY_GRID", QFileInfo( fileNames.last() ).absolutePath() );
// Find or create the FomationNamesCollection // Find or create the FomationNamesCollection
RimFormationNames* formationName = importFormationFiles( fileNames );
RimProject* proj = RiaApplication::instance()->project();
RimFormationNamesCollection* fomNameColl = proj->activeOilField()->formationNamesCollection();
if ( !fomNameColl )
{
fomNameColl = new RimFormationNamesCollection;
proj->activeOilField()->formationNamesCollection = fomNameColl;
}
// For each file, find existing Formation names item, or create new
RimFormationNames* formationName = fomNameColl->importFiles( fileNames );
if ( fileNames.size() > 1 ) return; if ( fileNames.size() > 1 ) return;
std::vector<RimCase*> cases;
proj->allCases( cases );
if ( !cases.empty() )
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
if ( activeView )
{
RimCase* ownerCase = activeView->ownerCase();
if ( ownerCase )
{
ownerCase->setFormationNames( formationName );
ownerCase->updateConnectedEditors();
}
}
}
fomNameColl->updateConnectedEditors();
if ( formationName ) if ( formationName )
{ {
Riu3DMainWindowTools::selectAsCurrentItem( formationName ); RimProject* proj = RiaApplication::instance()->project();
std::vector<RimCase*> cases;
proj->allCases( cases );
if ( !cases.empty() )
{
Rim3dView* activeView = RiaApplication::instance()->activeReservoirView();
if ( activeView )
{
RimCase* ownerCase = activeView->ownerCase();
if ( ownerCase )
{
ownerCase->setFormationNames( formationName );
ownerCase->updateConnectedEditors();
}
}
}
if ( formationName )
{
Riu3DMainWindowTools::selectAsCurrentItem( formationName );
}
} }
} }

View File

@ -19,6 +19,7 @@
#pragma once #pragma once
#include "cafCmdFeature.h" #include "cafCmdFeature.h"
class RimFormationNames;
//================================================================================================== //==================================================================================================
/// ///
@ -27,6 +28,8 @@ class RicImportFormationNamesFeature : public caf::CmdFeature
{ {
CAF_CMD_HEADER_INIT; CAF_CMD_HEADER_INIT;
static RimFormationNames* importFormationFiles( const QStringList& fileNames );
protected: protected:
// Overrides // Overrides
bool isCommandEnabled() override; bool isCommandEnabled() override;

View File

@ -18,6 +18,7 @@
#include "RicImportObservedFmuDataFeature.h" #include "RicImportObservedFmuDataFeature.h"
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RicImportFormationNamesFeature.h"
#include "RifReaderFmuRft.h" #include "RifReaderFmuRft.h"
#include "RimObservedDataCollection.h" #include "RimObservedDataCollection.h"
@ -32,7 +33,9 @@
#include "cafSelectionManager.h" #include "cafSelectionManager.h"
#include <QAction> #include <QAction>
#include <QDir>
#include <QFileDialog> #include <QFileDialog>
#include <QFileInfo>
#include <QMessageBox> #include <QMessageBox>
CAF_CMD_SOURCE_INIT( RicImportObservedFmuDataFeature, "RicImportObservedFmuDataFeature" ); CAF_CMD_SOURCE_INIT( RicImportObservedFmuDataFeature, "RicImportObservedFmuDataFeature" );
@ -62,6 +65,14 @@ void RicImportObservedFmuDataFeature::selectObservedDataPathInDialog()
for ( const QString& subDir : subDirsWithFmuData ) for ( const QString& subDir : subDirsWithFmuData )
{ {
importedData = observedDataCollection->createAndAddFmuRftDataFromPath( subDir ); importedData = observedDataCollection->createAndAddFmuRftDataFromPath( subDir );
QDir dir( subDir );
QString layerZoneFile = dir.absoluteFilePath( "layer_zone_table.txt" );
if ( QFileInfo::exists( layerZoneFile ) )
{
QStringList fileNames;
fileNames << layerZoneFile;
RicImportFormationNamesFeature::importFormationFiles( fileNames );
}
} }
if ( importedData != nullptr ) if ( importedData != nullptr )
{ {