#2555 Open summary restart dialog if necessary when opening egrid files

This commit is contained in:
Bjørn Erik Jensen 2018-03-20 14:32:24 +01:00
parent 95a9744241
commit 148d058d88
6 changed files with 70 additions and 22 deletions

View File

@ -127,7 +127,8 @@ bool RiaImportEclipseCaseTools::openEclipseCaseShowTimeStepFilterImpl(const QStr
if (!sumCaseColl->findSummaryCaseFromEclipseResultCase(rimResultReservoir)) if (!sumCaseColl->findSummaryCaseFromEclipseResultCase(rimResultReservoir))
{ {
RimSummaryCase* newSumCase = sumCaseColl->createAndAddSummaryCaseFromEclipseResultCase(rimResultReservoir); std::vector<RimSummaryCase*> newSumCases = sumCaseColl->createAndAddSummaryCasesFromEclipseResultCase(rimResultReservoir);
RimSummaryCase* newSumCase = !newSumCases.empty() ? newSumCases.front() : nullptr;
if (newSumCase) if (newSumCase)
{ {

View File

@ -32,6 +32,19 @@
#include <QDir> #include <QDir>
//--------------------------------------------------------------------------------------------------
/// Internal function
//--------------------------------------------------------------------------------------------------
template<typename T>
bool vectorContains(const std::vector<T>& vector, T item)
{
for (const auto& i : vector)
{
if (i == item) return true;
}
return false;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -76,7 +89,7 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const QStringList& initialFiles, std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const QStringList& initialFiles,
bool enableApplyToAllField) bool enableApplyToAllField)
{ {
std::set<RifSummaryCaseFileInfo> filesToImport; std::vector<RifSummaryCaseFileInfo> filesToImport;
RicSummaryCaseRestartDialogResult lastResult; RicSummaryCaseRestartDialogResult lastResult;
for (const QString& file : initialFiles) for (const QString& file : initialFiles)
@ -87,9 +100,9 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
for (const QString& file : result.files) for (const QString& file : result.files)
{ {
RifSummaryCaseFileInfo fi(file, result.option == RicSummaryCaseRestartDialog::READ_ALL); RifSummaryCaseFileInfo fi(file, result.option == RicSummaryCaseRestartDialog::READ_ALL);
if (filesToImport.count(fi) == 0) if (!vectorContains(filesToImport, fi))
{ {
filesToImport.insert(fi); filesToImport.push_back(fi);
} }
} }
} }

View File

@ -51,6 +51,8 @@ RimGridSummaryCase::RimGridSummaryCase()
m_eclipseGridFileName.uiCapability()->setUiReadOnly(true); m_eclipseGridFileName.uiCapability()->setUiReadOnly(true);
m_eclipseGridFileName.xmlCapability()->setIOWritable(false); m_eclipseGridFileName.xmlCapability()->setIOWritable(false);
CAF_PDM_InitField(&m_includeRestartFiles, "IncludeRestartFiles", false, "Include Restart Files", "", "", "");
m_includeRestartFiles.uiCapability()->setUiHidden(true);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -175,7 +177,7 @@ void RimGridSummaryCase::updateFilePathsFromProjectPath(const QString & newProje
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimGridSummaryCase::createSummaryReaderInterface() void RimGridSummaryCase::createSummaryReaderInterface()
{ {
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader(this->summaryHeaderFilename(), true /* read restart files */); m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader(this->summaryHeaderFilename(), m_includeRestartFiles);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -186,3 +188,11 @@ RifSummaryReaderInterface* RimGridSummaryCase::summaryReader()
return m_summaryFileReader.p(); return m_summaryFileReader.p();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridSummaryCase::setIncludeRestartFiles(bool includeRestartFiles)
{
m_includeRestartFiles = includeRestartFiles;
}

View File

@ -50,6 +50,8 @@ public:
virtual void createSummaryReaderInterface() override; virtual void createSummaryReaderInterface() override;
virtual RifSummaryReaderInterface* summaryReader() override; virtual RifSummaryReaderInterface* summaryReader() override;
void setIncludeRestartFiles(bool includeRestartFiles);
private: private:
QString eclipseGridFileName() const; QString eclipseGridFileName() const;
@ -59,4 +61,5 @@ private:
caf::PdmProxyValueField<QString> m_eclipseGridFileName; caf::PdmProxyValueField<QString> m_eclipseGridFileName;
cvf::ref<RifReaderEclipseSummary> m_summaryFileReader; cvf::ref<RifReaderEclipseSummary> m_summaryFileReader;
caf::PdmField<bool> m_includeRestartFiles;
}; };

View File

@ -91,7 +91,7 @@ void RimSummaryCaseMainCollection::createSummaryCasesFromRelevantEclipseResultCa
if (!isFound) if (!isFound)
{ {
// Create new GridSummaryCase // Create new GridSummaryCase
createAndAddSummaryCaseFromEclipseResultCase(eclResCase); createAndAddSummaryCasesFromEclipseResultCase(eclResCase);
} }
} }
} }
@ -265,29 +265,50 @@ void RimSummaryCaseMainCollection::loadAllSummaryCaseData()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimSummaryCase* RimSummaryCaseMainCollection::createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromEclipseResultCase(RimEclipseResultCase* eclResCase)
{ {
QString gridFileName = eclResCase->gridFileName(); std::vector<RimSummaryCase*> sumCases;
QString summaryHeaderFile; QString gridFileName = eclResCase->gridFileName();
bool formatted; QString summaryHeaderFile;
bool formatted;
RifEclipseSummaryTools::findSummaryHeaderFile(QDir::toNativeSeparators(gridFileName), &summaryHeaderFile, &formatted); RifEclipseSummaryTools::findSummaryHeaderFile(QDir::toNativeSeparators(gridFileName), &summaryHeaderFile, &formatted);
if(!summaryHeaderFile.isEmpty()) if(!summaryHeaderFile.isEmpty())
{ {
// Activate when after discussing how grid case and summary case(s) are going to be related RifSummaryCaseRestartSelector fileSelector;
// std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImport(QStringList({ summaryHeaderFile }));
//RifSummaryCaseRestartSelector fileSelector;
//std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImport(QStringList({ summaryHeaderFile }));
RimGridSummaryCase* newSumCase = new RimGridSummaryCase(); if (!importFileInfos.empty())
this->m_cases.push_back(newSumCase); {
newSumCase->setAssociatedEclipseCase(eclResCase); RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity(); this->m_cases.push_back(newSumCase);
return newSumCase; newSumCase->setIncludeRestartFiles(importFileInfos.front().includeRestartFiles);
newSumCase->setAssociatedEclipseCase(eclResCase);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
sumCases.push_back(newSumCase);
// Remove the processed element and add 'orphan' summary cases
importFileInfos.erase(importFileInfos.begin());
for (const RifSummaryCaseFileInfo& fileInfo : importFileInfos)
{
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
this->m_cases.push_back(newSumCase);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setSummaryHeaderFileName(fileInfo.fileName);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
sumCases.push_back(newSumCase);
}
}
} }
return nullptr; return sumCases;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -44,7 +44,7 @@ public:
std::vector<RimSummaryCaseCollection*> summaryCaseCollections() const; std::vector<RimSummaryCaseCollection*> summaryCaseCollections() const;
void createSummaryCasesFromRelevantEclipseResultCases(); void createSummaryCasesFromRelevantEclipseResultCases();
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase); std::vector<RimSummaryCase*> createAndAddSummaryCasesFromEclipseResultCase(RimEclipseResultCase* eclResCase);
std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFiles(const QStringList& inputFileNames); std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFiles(const QStringList& inputFileNames);
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const; RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;