mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Simplify PdmDocument class and move fileName to private
Remove resolveReferencesRecursively() and initAfterReadRecursively() from PdmDocument::readFile(). These functions will be called in RiaApplication::loadProject after the file paths modifications are done. This will ensure that file paths can be used in initAfterRead() functions.
This commit is contained in:
parent
beccd2454e
commit
41d5e498d7
@ -461,8 +461,9 @@ bool RiaApplication::loadProject( const QString& projectFileName, ProjectLoadAct
|
||||
return false;
|
||||
}
|
||||
|
||||
m_project->fileName = fullPathProjectFileName;
|
||||
m_project->setFileName( fullPathProjectFileName );
|
||||
m_project->readFile();
|
||||
m_project->updatesAfterProjectFileIsRead();
|
||||
|
||||
// Apply any modifications to the loaded project before we go ahead and load actual data
|
||||
if ( projectModifier )
|
||||
@ -493,6 +494,11 @@ bool RiaApplication::loadProject( const QString& projectFileName, ProjectLoadAct
|
||||
return true;
|
||||
}
|
||||
|
||||
// At this point, all the file paths variables are replaced and all file paths updated to the new location. This will enable use of file
|
||||
// paths in initAfterRead().
|
||||
m_project->resolveReferencesRecursively();
|
||||
m_project->initAfterReadRecursively();
|
||||
|
||||
// Migrate all RimGridCases to RimFileSummaryCase
|
||||
RimGridSummaryCase_obsolete::convertGridCasesToSummaryFileCases( m_project.get() );
|
||||
|
||||
@ -802,7 +808,7 @@ bool RiaApplication::saveProjectAs( const QString& fileName, gsl::not_null<QStri
|
||||
{
|
||||
CAF_ASSERT( m_project );
|
||||
// Make sure we always store path with forward slash to avoid issues when opening the project file on Linux
|
||||
m_project->fileName = RiaFilePathTools::toInternalSeparator( fileName );
|
||||
m_project->setFileName( RiaFilePathTools::toInternalSeparator( fileName ) );
|
||||
|
||||
onProjectBeingSaved();
|
||||
|
||||
|
@ -113,7 +113,7 @@ void RicExportSelectedWellPathsFeature::writeWellPathGeometryToStream( QTextStre
|
||||
|
||||
if ( writeProjectInfo )
|
||||
{
|
||||
formatter.comment( "Project: " + RimProject::current()->fileName );
|
||||
formatter.comment( "Project: " + RimProject::current()->fileName() );
|
||||
stream << "\n";
|
||||
}
|
||||
|
||||
|
@ -283,7 +283,7 @@ void RimProject::close()
|
||||
delete viewLinkerCollection->viewLinker();
|
||||
viewLinkerCollection->viewLinker = nullptr;
|
||||
|
||||
fileName = "";
|
||||
setFileName( "" );
|
||||
|
||||
m_globalPathList = "";
|
||||
|
||||
@ -303,7 +303,7 @@ void RimProject::close()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimProject::beforeInitAfterRead()
|
||||
void RimProject::updatesAfterProjectFileIsRead()
|
||||
{
|
||||
distributePathsFromGlobalPathList();
|
||||
|
||||
@ -408,7 +408,7 @@ bool RimProject::writeProjectFile()
|
||||
{
|
||||
transferPathsToGlobalPathList();
|
||||
|
||||
QFile xmlFile( fileName );
|
||||
QFile xmlFile( fileName() );
|
||||
if ( !xmlFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) return false;
|
||||
|
||||
QString content = documentAsString();
|
||||
@ -416,7 +416,7 @@ bool RimProject::writeProjectFile()
|
||||
|
||||
if ( RiaPreferences::current()->storeBackupOfProjectFiles() )
|
||||
{
|
||||
QString backupFilename = fileName + "db";
|
||||
QString backupFilename = fileName() + "db";
|
||||
const int maximumRecordCount = 50;
|
||||
RiaProjectBackupTools::appendTextToDatabase( backupFilename, maximumRecordCount, content );
|
||||
}
|
||||
@ -488,9 +488,10 @@ bool RimProject::isProjectFileVersionEqualOrOlderThan( const QString& otherProje
|
||||
void RimProject::setProjectFileNameAndUpdateDependencies( const QString& projectFileName )
|
||||
{
|
||||
// Extract the filename of the project file when it was saved
|
||||
QString oldProjectFileName = fileName;
|
||||
QString oldProjectFileName = fileName();
|
||||
|
||||
// Replace with the new actual filename
|
||||
fileName = projectFileName;
|
||||
setFileName( projectFileName );
|
||||
|
||||
QFileInfo fileInfo( projectFileName );
|
||||
QString newProjectPath = fileInfo.path();
|
||||
|
@ -195,8 +195,9 @@ public:
|
||||
|
||||
std::vector<caf::FilePath*> allFilePaths() const;
|
||||
|
||||
void updatesAfterProjectFileIsRead();
|
||||
|
||||
protected:
|
||||
void beforeInitAfterRead() override;
|
||||
void initAfterRead() override;
|
||||
void setupBeforeSave() override;
|
||||
|
||||
|
@ -59,7 +59,7 @@ TEST( RimRelocatePathTest, findPathsInProjectFile )
|
||||
|
||||
RimProject project;
|
||||
|
||||
project.fileName = fileName;
|
||||
project.setFileName( fileName );
|
||||
project.readFile();
|
||||
|
||||
std::vector<caf::FilePath*> filePaths;
|
||||
|
@ -48,7 +48,23 @@ CAF_PDM_SOURCE_INIT( PdmDocument, "PdmDocument" );
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
PdmDocument::PdmDocument()
|
||||
{
|
||||
CAF_PDM_InitFieldNoDefault( &fileName, "DocumentFileName", "File Name" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_fileName, "DocumentFileName", "File Name" );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString PdmDocument::fileName() const
|
||||
{
|
||||
return m_fileName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmDocument::setFileName( const QString& fileName )
|
||||
{
|
||||
m_fileName = fileName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -56,7 +72,7 @@ PdmDocument::PdmDocument()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmDocument::readFile()
|
||||
{
|
||||
QFile xmlFile( fileName );
|
||||
QFile xmlFile( m_fileName );
|
||||
if ( !xmlFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) return;
|
||||
|
||||
readFile( &xmlFile );
|
||||
@ -76,19 +92,11 @@ void PdmDocument::readFile( QIODevice* xmlFile )
|
||||
{
|
||||
if ( !matchesClassKeyword( xmlStream.name().toString() ) )
|
||||
{
|
||||
// Error: This is not a Ceetron Pdm based xml document
|
||||
return;
|
||||
}
|
||||
readFields( xmlStream, PdmDefaultObjectFactory::instance(), false );
|
||||
}
|
||||
}
|
||||
|
||||
// Ask all objects to initialize and set up internal data structures and pointers
|
||||
// after everything is read from file
|
||||
|
||||
resolveReferencesRecursively();
|
||||
beforeInitAfterRead();
|
||||
initAfterReadRecursively();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -96,7 +104,7 @@ void PdmDocument::readFile( QIODevice* xmlFile )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool PdmDocument::writeFile()
|
||||
{
|
||||
QFile xmlFile( fileName );
|
||||
QFile xmlFile( m_fileName );
|
||||
if ( !xmlFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) return false;
|
||||
|
||||
writeFile( &xmlFile );
|
||||
@ -161,13 +169,6 @@ void PdmDocument::updateUiIconStateRecursively( PdmObjectHandle* object )
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void PdmDocument::beforeInitAfterRead()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -54,23 +54,24 @@ class PdmDocument : public PdmObject
|
||||
public:
|
||||
PdmDocument();
|
||||
|
||||
PdmField<QString> fileName;
|
||||
QString fileName() const;
|
||||
void setFileName( const QString& fileName );
|
||||
|
||||
void readFile();
|
||||
bool writeFile();
|
||||
|
||||
QString documentAsString();
|
||||
|
||||
void readFile( QIODevice* device );
|
||||
void writeFile( QIODevice* device );
|
||||
|
||||
static void updateUiIconStateRecursively( PdmObjectHandle* root );
|
||||
|
||||
protected:
|
||||
virtual void beforeInitAfterRead();
|
||||
QString documentAsString();
|
||||
|
||||
private:
|
||||
void writeDocumentToXmlStream( QXmlStreamWriter& xmlStream );
|
||||
void readFile( QIODevice* device );
|
||||
void writeFile( QIODevice* device );
|
||||
|
||||
private:
|
||||
PdmField<QString> m_fileName;
|
||||
};
|
||||
|
||||
} // End of namespace caf
|
||||
|
@ -476,6 +476,9 @@ TEST( BaseTest, ReadWrite )
|
||||
{
|
||||
QString xmlDocumentContentWithErrors;
|
||||
|
||||
QString fileName = "PdmTestFil.xml";
|
||||
QString fileNameCopy = "PdmTestFil_copy.xml";
|
||||
|
||||
{
|
||||
MyPdmDocument xmlDoc;
|
||||
|
||||
@ -524,7 +527,7 @@ TEST( BaseTest, ReadWrite )
|
||||
xmlDoc.objects.push_back( id2 );
|
||||
|
||||
// Write file
|
||||
xmlDoc.fileName = "PdmTestFil.xml";
|
||||
xmlDoc.setFileName( fileName );
|
||||
xmlDoc.writeFile();
|
||||
|
||||
caf::PdmObjectGroup pog;
|
||||
@ -557,9 +560,14 @@ TEST( BaseTest, ReadWrite )
|
||||
MyPdmDocument xmlDoc;
|
||||
|
||||
// Read file
|
||||
xmlDoc.fileName = "PdmTestFil.xml";
|
||||
xmlDoc.setFileName( fileName );
|
||||
xmlDoc.readFile();
|
||||
|
||||
QFile f( fileNameCopy );
|
||||
f.remove();
|
||||
|
||||
std::rename( fileName.toStdString().data(), fileNameCopy.toStdString().data() );
|
||||
|
||||
caf::PdmObjectGroup pog;
|
||||
for ( size_t i = 0; i < xmlDoc.objects.size(); i++ )
|
||||
{
|
||||
@ -578,16 +586,14 @@ TEST( BaseTest, ReadWrite )
|
||||
EXPECT_EQ( QString( "ÆØÅ Test text end" ), ihDObjs[0]->m_textField() );
|
||||
|
||||
// Write file
|
||||
QFile xmlFile( "PdmTestFil2.xml" );
|
||||
xmlFile.open( QIODevice::WriteOnly | QIODevice::Text );
|
||||
xmlDoc.writeFile( &xmlFile );
|
||||
xmlFile.close();
|
||||
xmlDoc.setFileName( fileName );
|
||||
xmlDoc.writeFile();
|
||||
}
|
||||
|
||||
// Check that the files are identical
|
||||
{
|
||||
QFile f1( "PdmTestFil.xml" );
|
||||
QFile f2( "PdmTestFil2.xml" );
|
||||
QFile f1( fileName );
|
||||
QFile f2( fileNameCopy );
|
||||
f1.open( QIODevice::ReadOnly | QIODevice::Text );
|
||||
f2.open( QIODevice::ReadOnly | QIODevice::Text );
|
||||
QByteArray ba1 = f1.readAll();
|
||||
@ -677,7 +683,7 @@ TEST( BaseTest, ReadWrite )
|
||||
// Read the document containing errors
|
||||
|
||||
MyPdmDocument xmlErrorDoc;
|
||||
xmlErrorDoc.fileName = "PdmTestFilWithError.xml";
|
||||
xmlErrorDoc.setFileName( "PdmTestFilWithError.xml" );
|
||||
xmlErrorDoc.readFile();
|
||||
|
||||
caf::PdmObjectGroup pog;
|
||||
|
@ -1612,9 +1612,11 @@ void MainWindow::slotLoadProject()
|
||||
setPdmRoot( nullptr );
|
||||
releaseTestData();
|
||||
|
||||
m_testRoot = new DemoPdmObjectGroup;
|
||||
m_testRoot->fileName = fileName;
|
||||
m_testRoot = new DemoPdmObjectGroup;
|
||||
m_testRoot->setFileName( fileName );
|
||||
m_testRoot->readFile();
|
||||
m_testRoot->resolveReferencesRecursively();
|
||||
m_testRoot->initAfterReadRecursively();
|
||||
|
||||
setPdmRoot( m_testRoot );
|
||||
}
|
||||
@ -1631,7 +1633,7 @@ void MainWindow::slotSaveProject()
|
||||
"Project Files (*.proj);;All files(*.*)" );
|
||||
if ( !fileName.isEmpty() )
|
||||
{
|
||||
m_testRoot->fileName = fileName;
|
||||
m_testRoot->setFileName( fileName );
|
||||
m_testRoot->writeFile();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user