Move Case file name to the base RimCase class and make consistent

This commit is contained in:
Gaute Lindkvist 2020-02-21 12:07:15 +01:00
parent 169bea818a
commit ae3651ab30
12 changed files with 68 additions and 81 deletions

View File

@ -829,7 +829,7 @@ bool RiaApplication::openOdbCaseFromFile( const QString& fileName, bool applyTim
QString caseName = gridFileName.completeBaseName();
RimGeoMechCase* geoMechCase = new RimGeoMechCase();
geoMechCase->setFileName( fileName );
geoMechCase->setGridFileName( fileName );
geoMechCase->caseUserDescription = caseName;
geoMechCase->setApplyTimeFilter( applyTimeStepFilter );
m_project->assignCaseIdToCase( geoMechCase );

View File

@ -192,7 +192,7 @@ void RiaProjectModifier::replaceCase( RimProject* project )
}
else if ( geomechCase )
{
geomechCase->setFileName( replaceFileName );
geomechCase->setGridFileName( replaceFileName );
geomechCase->caseUserDescription = caseNameFromGridFileName( replaceFileName );
}
}

View File

@ -35,7 +35,7 @@
#include "RimExtrudedCurveIntersection.h"
#include "RimGridView.h"
CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimCase, "RimCase" );
CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimCase, "Case", "RimCase" );
//--------------------------------------------------------------------------------------------------
///
@ -43,14 +43,22 @@ CAF_PDM_XML_ABSTRACT_SOURCE_INIT( RimCase, "RimCase" );
RimCase::RimCase()
: m_isInActiveDestruction( false )
{
CAF_PDM_InitObject( "Case", ":/Case48x48.png", "", "" );
CAF_PDM_InitObject( "Case", ":/Case48x48.png", "", "The ResInsight base class for Cases" );
RICF_InitField( &caseUserDescription, "CaseUserDescription", QString(), "Case Name", "", "", "" );
RICF_InitField( &caseUserDescription, "Name", QString(), "Case Name", "", "", "" );
caseUserDescription.xmlCapability()->registerKeywordAlias( "CaseUserDescription" );
RICF_InitField( &caseId, "CaseId", -1, "Case ID", "", "", "" );
RICF_InitField( &caseId, "Id", -1, "Case ID", "", "", "" );
caseId.xmlCapability()->registerKeywordAlias( "CaseId" );
caseId.uiCapability()->setUiReadOnly( true );
caseId.capability<RicfFieldHandle>()->setIOWriteable( false );
RICF_InitFieldNoDefault( &m_caseFileName, "FilePath", "Case File Name", "", "", "" );
m_caseFileName.xmlCapability()->registerKeywordAlias( "CaseFileName" );
m_caseFileName.xmlCapability()->registerKeywordAlias( "GridFileName" );
m_caseFileName.uiCapability()->setUiReadOnly( true );
CAF_PDM_InitFieldNoDefault( &m_activeFormationNames, "DefaultFormationNames", "Formation Names File", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_timeStepFilter, "TimeStepFilter", "Time Step Filter", "", "", "" );
@ -76,6 +84,22 @@ RimCase::~RimCase()
m_isInActiveDestruction = true; // Needed because destruction of m_intersectionViews results in call to views()
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCase::setGridFileName( const QString& fileName )
{
m_caseFileName.v().setPath( fileName );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimCase::gridFileName() const
{
return m_caseFileName().path();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -53,6 +53,9 @@ public:
caf::PdmField<int> caseId;
caf::PdmField<QString> caseUserDescription;
void setGridFileName( const QString& fileName );
QString gridFileName() const;
std::vector<Rim3dView*> views() const;
std::vector<RimGridView*> gridViews() const;
@ -88,6 +91,7 @@ private:
caf::PdmFieldHandle* userDescriptionField() override;
protected:
caf::PdmField<caf::FilePath> m_caseFileName;
caf::PdmChildField<RimTimeStepFilter*> m_timeStepFilter;
caf::PdmChildField<Rim2dIntersectionViewCollection*> m_2dIntersectionViewCollection;
caf::PdmPtrField<RimFormationNames*> m_activeFormationNames;

View File

@ -93,7 +93,6 @@ public:
const RigVirtualPerforationTransmissibilities* computeAndGetVirtualPerforationTransmissibilities();
virtual QString locationOnDisc() const { return QString(); }
virtual QString gridFileName() const { return QString(); }
RimCaseCollection* parentCaseCollection();
RimEclipseContourMapViewCollection* contourMapCollection();

View File

@ -55,8 +55,6 @@ RimEclipseInputCase::RimEclipseInputCase()
: RimEclipseCase()
{
CAF_PDM_InitObject( "RimInputCase", ":/EclipseInput48x48.png", "", "" );
CAF_PDM_InitFieldNoDefault( &m_gridFileName, "GridFileName", "Case File Name", "", "", "" );
m_gridFileName.uiCapability()->setUiReadOnly( true );
CAF_PDM_InitFieldNoDefault( &m_additionalFiles, "AdditionalFileNamesProxy", "Additional Files", "", "", "" );
m_additionalFiles.registerGetMethod( this, &RimEclipseInputCase::additionalFiles );
@ -125,7 +123,7 @@ bool RimEclipseInputCase::openDataFileSet( const QStringList& fileNames )
QString errorMessages;
if ( RifEclipseInputFileTools::openGridFile( fileNames[i], this->eclipseCaseData(), importFaults, &errorMessages ) )
{
m_gridFileName = fileNames[i];
setGridFileName( fileNames[i] );
QFileInfo gridFileName( fileNames[i] );
QString caseName = gridFileName.completeBaseName();
@ -192,16 +190,16 @@ bool RimEclipseInputCase::openEclipseGridFile()
{
cvf::ref<RifReaderInterface> readerInterface;
if ( m_gridFileName().path().contains( RiaDefines::mockModelBasicInputCase() ) )
if ( gridFileName().contains( RiaDefines::mockModelBasicInputCase() ) )
{
readerInterface = this->createMockModel( this->m_gridFileName().path() );
readerInterface = this->createMockModel( gridFileName() );
}
else
{
readerInterface = new RifReaderEclipseInput;
cvf::ref<RigEclipseCaseData> eclipseCase = new RigEclipseCaseData( this );
if ( !readerInterface->open( m_gridFileName().path(), eclipseCase.p() ) )
if ( !readerInterface->open( gridFileName(), eclipseCase.p() ) )
{
return false;
}
@ -260,7 +258,7 @@ void RimEclipseInputCase::loadAndSyncronizeInputProperties()
{
filenames.push_back( fileName );
}
filenames.push_back( m_gridFileName().path() );
filenames.push_back( gridFileName() );
RifEclipseInputPropertyLoader::loadAndSyncronizeInputProperties( inputPropertyCollection(), eclipseCaseData(), filenames );
}
@ -275,7 +273,7 @@ cvf::ref<RifReaderInterface> RimEclipseInputCase::createMockModel( QString model
if ( modelName == RiaDefines::mockModelBasicInputCase() )
{
m_gridFileName = modelName;
setGridFileName( modelName );
// Create the mock file interface and and RigSerervoir and set them up.
mockFileInterface->setWorldCoordinates( cvf::Vec3d( 10, 10, 10 ), cvf::Vec3d( 20, 20, 20 ) );
@ -318,7 +316,7 @@ void RimEclipseInputCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
{
uiOrdering.add( &caseUserDescription );
uiOrdering.add( &caseId );
uiOrdering.add( &m_gridFileName );
uiOrdering.add( &m_caseFileName );
uiOrdering.add( &m_additionalFiles );
auto group = uiOrdering.addNewGroup( "Case Options" );
@ -332,9 +330,9 @@ void RimEclipseInputCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrde
//--------------------------------------------------------------------------------------------------
QString RimEclipseInputCase::locationOnDisc() const
{
if ( m_gridFileName().path().isEmpty() ) return QString();
if ( gridFileName().isEmpty() ) return QString();
QFileInfo fi( m_gridFileName().path() );
QFileInfo fi( gridFileName() );
return fi.absolutePath();
}
@ -367,7 +365,7 @@ void RimEclipseInputCase::updateAdditionalFileFolder( const QString& newFolder )
QDir newDir( newFolder );
for ( RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties() )
{
if ( inputProperty->fileName == m_gridFileName().path() ) continue;
if ( inputProperty->fileName == gridFileName() ) continue;
QFileInfo oldFilePath( inputProperty->fileName().path() );
QFileInfo newFilePath( newDir, oldFilePath.fileName() );
@ -383,7 +381,7 @@ std::vector<QString> RimEclipseInputCase::additionalFiles() const
std::vector<QString> additionalFiles;
for ( const RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties() )
{
if ( inputProperty->fileName == m_gridFileName().path() ) continue;
if ( inputProperty->fileName == gridFileName() ) continue;
additionalFiles.push_back( inputProperty->fileName().path() );
}

View File

@ -55,7 +55,6 @@ public:
// Overrides from RimCase
QString locationOnDisc() const override;
QString gridFileName() const override { return m_gridFileName().path(); }
void updateFilePathsFromProjectPath( const QString& projectPath, const QString& oldProjectPath ) override;
@ -72,7 +71,6 @@ private:
private:
// Fields
caf::PdmField<caf::FilePath> m_gridFileName;
caf::PdmProxyValueField<std::vector<QString>> m_additionalFiles;
// Obsolete fields

View File

@ -63,18 +63,14 @@
#include <fstream>
#include <string>
CAF_PDM_SOURCE_INIT( RimEclipseResultCase, "EclipseCase" );
CAF_PDM_SCRIPTABLE_SOURCE_INIT( RimEclipseResultCase, "EclipseCase" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseResultCase::RimEclipseResultCase()
: RimEclipseCase()
{
CAF_PDM_InitObject( "Eclipse Case", ":/Case48x48.png", "", "" );
RICF_InitFieldNoDefault( &caseFileName, "CaseFileName", "Case File Name", "", "", "" );
caseFileName.uiCapability()->setUiReadOnly( true );
caseFileName.capability<RicfFieldHandle>()->setIOWriteable( false );
CAF_PDM_InitObject( "Eclipse Case", ":/Case48x48.png", "", "The Regular Eclipse Results Case" );
CAF_PDM_InitFieldNoDefault( &m_unitSystem, "UnitSystem", "Unit System", "", "", "" );
m_unitSystem.registerGetMethod( RiaApplication::instance()->project(), &RimProject::commonUnitSystemForAllCases );
@ -127,13 +123,13 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter
cvf::ref<RifReaderInterface> readerInterface;
if ( caseFileName().path().contains( "Result Mock Debug Model" ) )
if ( gridFileName().contains( "Result Mock Debug Model" ) )
{
readerInterface = this->createMockModel( this->caseFileName().path() );
readerInterface = this->createMockModel( this->gridFileName() );
}
else
{
if ( !caf::Utils::fileExists( caseFileName().path() ) )
if ( !caf::Utils::fileExists( gridFileName() ) )
{
return false;
}
@ -142,7 +138,7 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter
readerEclipseOutput->setFilenamesWithFaults( this->filesContainingFaults() );
cvf::ref<RifEclipseRestartDataAccess> restartDataAccess =
RifEclipseOutputFileTools::createDynamicResultAccess( caseFileName().path() );
RifEclipseOutputFileTools::createDynamicResultAccess( gridFileName() );
{
std::vector<QDateTime> timeSteps;
@ -182,7 +178,7 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter
readerEclipseOutput->setTimeStepFilter( m_timeStepFilter->filteredTimeSteps() );
cvf::ref<RigEclipseCaseData> eclipseCase = new RigEclipseCaseData( this );
if ( !readerEclipseOutput->open( caseFileName().path(), eclipseCase.p() ) )
if ( !readerEclipseOutput->open( gridFileName(), eclipseCase.p() ) )
{
return false;
}
@ -210,7 +206,7 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter
m_gridAndWellDataIsReadFromFile = true;
m_activeCellInfoIsReadFromFile = true;
QFileInfo eclipseCaseFileInfo( caseFileName().path() );
QFileInfo eclipseCaseFileInfo( gridFileName() );
QString rftFileName = eclipseCaseFileInfo.path() + "/" + eclipseCaseFileInfo.completeBaseName() + ".RFT";
QFileInfo rftFileInfo( rftFileName );
@ -275,13 +271,13 @@ bool RimEclipseResultCase::openAndReadActiveCellData( RigEclipseCaseData* mainEc
if ( m_activeCellInfoIsReadFromFile ) return true;
cvf::ref<RifReaderInterface> readerInterface;
if ( caseFileName().path().contains( "Result Mock Debug Model" ) )
if ( gridFileName().contains( "Result Mock Debug Model" ) )
{
readerInterface = this->createMockModel( this->caseFileName().path() );
readerInterface = this->createMockModel( this->gridFileName() );
}
else
{
if ( !caf::Utils::fileExists( caseFileName().path() ) )
if ( !caf::Utils::fileExists( gridFileName() ) )
{
return false;
}
@ -293,7 +289,7 @@ bool RimEclipseResultCase::openAndReadActiveCellData( RigEclipseCaseData* mainEc
std::vector<QDateTime> timeStepDates = mainEclipseCase->results( RiaDefines::MATRIX_MODEL )->timeStepDates();
cvf::ref<RifReaderEclipseOutput> readerEclipseOutput = new RifReaderEclipseOutput;
if ( !readerEclipseOutput->openAndReadActiveCellData( caseFileName().path(), timeStepDates, eclipseCase.p() ) )
if ( !readerEclipseOutput->openAndReadActiveCellData( gridFileName(), timeStepDates, eclipseCase.p() ) )
{
return false;
}
@ -469,7 +465,7 @@ RimEclipseResultCase::~RimEclipseResultCase()
//--------------------------------------------------------------------------------------------------
QString RimEclipseResultCase::locationOnDisc() const
{
QFileInfo fi( caseFileName().path() );
QFileInfo fi( gridFileName() );
return fi.absolutePath();
}
@ -478,7 +474,7 @@ QString RimEclipseResultCase::locationOnDisc() const
//--------------------------------------------------------------------------------------------------
void RimEclipseResultCase::readGridDimensions( std::vector<std::vector<int>>& gridDimensions )
{
RifEclipseOutputFileTools::readGridDimensions( caseFileName().path(), gridDimensions );
RifEclipseOutputFileTools::readGridDimensions( gridFileName(), gridDimensions );
}
//--------------------------------------------------------------------------------------------------
@ -490,7 +486,7 @@ void RimEclipseResultCase::updateFilePathsFromProjectPath( const QString& newPro
// std::vector<QString> searchedPaths;
// Update filename and folder paths when opening project from a different file location
// caseFileName = RimTools::relocateFile( caseFileName().path(), newProjectPath, oldProjectPath, &foundFile,
// caseFileName = RimTools::relocateFile( caseFileName(), newProjectPath, oldProjectPath, &foundFile,
// &searchedPaths );
// std::vector<QString> relocatedFaultFiles;
@ -553,21 +549,13 @@ RifReaderEclipseRft* RimEclipseResultCase::rftReader()
return m_readerEclipseRft.p();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseResultCase::setGridFileName( const QString& fileName )
{
this->caseFileName = fileName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimEclipseResultCase::setCaseInfo( const QString& userDescription, const QString& fileName )
{
this->caseUserDescription = userDescription;
this->caseFileName = fileName;
setGridFileName( fileName );
RimProject* proj = RiaApplication::instance()->project();
proj->assignCaseIdToCase( this );
@ -599,11 +587,11 @@ void RimEclipseResultCase::initAfterRead()
RimEclipseCase::initAfterRead();
// Convert from old (9.0.2) way of storing the case file
if ( caseFileName().path().isEmpty() )
if ( gridFileName().isEmpty() )
{
if ( !this->m_caseName_OBSOLETE().isEmpty() && !caseDirectory().isEmpty() )
{
caseFileName = QDir::fromNativeSeparators( caseDirectory() ) + "/" + m_caseName_OBSOLETE() + ".EGRID";
setGridFileName( QDir::fromNativeSeparators( caseDirectory() ) + "/" + m_caseName_OBSOLETE() + ".EGRID" );
}
}
}
@ -615,7 +603,7 @@ void RimEclipseResultCase::defineUiOrdering( QString uiConfigName, caf::PdmUiOrd
{
uiOrdering.add( &caseUserDescription );
uiOrdering.add( &caseId );
uiOrdering.add( &caseFileName );
uiOrdering.add( &m_caseFileName );
uiOrdering.add( &m_unitSystem );
auto group = uiOrdering.addNewGroup( "Case Options" );
@ -660,7 +648,7 @@ void RimEclipseResultCase::defineEditorAttribute( const caf::PdmFieldHandle* fie
if ( myAttr )
{
myAttr->m_fileSelectionFilter = "SourSim (*.sourres)";
myAttr->m_defaultPath = QFileInfo( caseFileName().path() ).absolutePath();
myAttr->m_defaultPath = QFileInfo( gridFileName() ).absolutePath();
}
}
}

View File

@ -48,7 +48,6 @@ public:
RimEclipseResultCase();
~RimEclipseResultCase() override;
void setGridFileName( const QString& fileName );
void setCaseInfo( const QString& userDescription, const QString& fileName );
void setSourSimFileName( const QString& fileName );
bool hasSourSimFile();
@ -64,7 +63,6 @@ public:
// Overrides from RimCase
QString locationOnDisc() const override;
QString gridFileName() const override { return caseFileName().path(); }
void updateFilePathsFromProjectPath( const QString& newProjectPath, const QString& oldProjectPath ) override;
RimFlowDiagSolution* defaultFlowDiagSolution();
@ -94,7 +92,6 @@ private:
cvf::ref<RifReaderEclipseRft> m_readerEclipseRft;
// Fields:
caf::PdmField<caf::FilePath> caseFileName;
caf::PdmProxyValueField<RiaEclipseUnitTools::UnitSystemType> m_unitSystem;
caf::PdmChildArrayField<RimFlowDiagSolution*> m_flowDiagSolutions;
caf::PdmField<caf::FilePath> m_sourSimFileName;

View File

@ -61,17 +61,15 @@
#include <array>
CAF_PDM_SOURCE_INIT( RimGeoMechCase, "ResInsightGeoMechCase" );
CAF_PDM_SCRIPTABLE_SOURCE_INIT( RimGeoMechCase, "GeoMechCase", "ResInsightGeoMechCase" );
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGeoMechCase::RimGeoMechCase( void )
: m_applyTimeFilter( false )
{
CAF_PDM_InitObject( "Geomechanical Case", ":/GeoMechCase48x48.png", "", "" );
CAF_PDM_InitObject( "Geomechanical Case", ":/GeoMechCase48x48.png", "", "The GeoMechanical Results Case" );
RICF_InitFieldNoDefault( &m_caseFileName, "CaseFileName", "Case File Name", "", "", "" );
m_caseFileName.uiCapability()->setUiReadOnly( true );
CAF_PDM_InitFieldNoDefault( &geoMechViews, "GeoMechViews", "", "", "", "" );
geoMechViews.uiCapability()->setUiHidden( true );
@ -132,22 +130,6 @@ RimGeoMechCase::~RimGeoMechCase( void )
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGeoMechCase::setFileName( const QString& fileName )
{
m_caseFileName.v().setPath( fileName );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimGeoMechCase::caseFileName() const
{
return m_caseFileName().path();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -55,8 +55,6 @@ public:
RimGeoMechCase( void );
~RimGeoMechCase( void ) override;
void setFileName( const QString& fileName );
QString caseFileName() const;
CaseOpenStatus openGeoMechCase( std::string* errorMessage );
RigGeoMechCaseData* geoMechData();
@ -115,7 +113,6 @@ private:
private:
cvf::ref<RigGeoMechCaseData> m_geoMechCaseData;
caf::PdmField<caf::FilePath> m_caseFileName;
caf::PdmField<double> m_cohesion;
caf::PdmField<double> m_frictionAngleDeg;
caf::PdmField<std::vector<caf::FilePath>> m_elementPropertyFileNames;

View File

@ -150,7 +150,7 @@ void RimGeoMechView::onLoadDataAndUpdate()
if ( !RiaRegressionTestRunner::instance()->isRunningRegressionTests() )
{
QString displayMessage = errorMessage.empty()
? "Could not open the Odb file: \n" + m_geomechCase->caseFileName()
? "Could not open the Odb file: \n" + m_geomechCase->gridFileName()
: QString::fromStdString( errorMessage );
if ( RiaGuiApplication::isRunning() )