Summary Case Import cleanup (#2795)

This commit is contained in:
Gaute Lindkvist
2018-04-25 08:57:00 +02:00
parent e953d6800c
commit c5e4bf93a6
6 changed files with 158 additions and 73 deletions

View File

@@ -67,7 +67,7 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile(const QStringList& file
RifSummaryCaseRestartSelector selector; RifSummaryCaseRestartSelector selector;
if(noDialog) selector.showDialog(false); if(noDialog) selector.showDialog(false);
selector.determineFilesToImportFromGridFiles(fileNames); selector.determineFilesToImportFromGridFiles(fileNames);
std::vector<RifSummaryCaseFileInfo> summaryFileInfos = selector.summaryFileInfos(); std::vector<RifSummaryCaseFileResultInfo> summaryFileInfos = selector.summaryFileInfos();
// Import eclipse case files // Import eclipse case files
for (const QString& gridCaseFile : selector.gridCaseFiles()) for (const QString& gridCaseFile : selector.gridCaseFiles())

View File

@@ -120,7 +120,7 @@ bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList
RifSummaryCaseRestartSelector fileSelector; RifSummaryCaseRestartSelector fileSelector;
fileSelector.determineFilesToImportFromSummaryFiles(fileNames); fileSelector.determineFilesToImportFromSummaryFiles(fileNames);
std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.summaryFileInfos(); std::vector<RifSummaryCaseFileResultInfo> importFileInfos = fileSelector.summaryFileInfos();
if (!importFileInfos.empty()) if (!importFileInfos.empty())
{ {

View File

@@ -91,7 +91,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportFromSummaryFiles(const
std::vector<RifSummaryCaseFileImportInfo> files; std::vector<RifSummaryCaseFileImportInfo> files;
for (QString f : initialSummaryFiles) for (QString f : initialSummaryFiles)
{ {
files.push_back(RifSummaryCaseFileImportInfo(f, "", true)); RifSummaryCaseFileImportInfo importInfo(f, "");
importInfo.setFailOnSummaryFileError(true);
files.push_back(importInfo);
} }
determineFilesToImport(files); determineFilesToImport(files);
} }
@@ -104,17 +107,43 @@ void RifSummaryCaseRestartSelector::determineFilesToImportFromGridFiles(const QS
std::vector<RifSummaryCaseFileImportInfo> files; std::vector<RifSummaryCaseFileImportInfo> files;
for (QString f : initialGridFiles) for (QString f : initialGridFiles)
{ {
files.push_back(RifSummaryCaseFileImportInfo(getSummaryFileFromGridFile(f), f)); RifSummaryCaseFileImportInfo importInfo(getSummaryFileFromGridFile(f), f);
importInfo.setFailOnSummaryFileError(false);
files.push_back(importInfo);
} }
determineFilesToImport(files); determineFilesToImport(files);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifSummaryCaseRestartSelector::showDialog(bool show)
{
m_showDialog = show;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifSummaryCaseFileResultInfo> RifSummaryCaseRestartSelector::summaryFileInfos() const
{
return m_summaryFileInfos;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QStringList RifSummaryCaseRestartSelector::gridCaseFiles() const
{
return m_gridFiles;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RifSummaryCaseRestartSelector::determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles) void RifSummaryCaseRestartSelector::determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles)
{ {
std::vector<RifSummaryCaseFileInfo> fileInfos; std::vector<RifSummaryCaseFileImportInfo> fileInfos;
if (m_showDialog) if (m_showDialog)
{ {
bool enableApplyToAllField = initialFiles.size() > 1; bool enableApplyToAllField = initialFiles.size() > 1;
@@ -169,10 +198,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std
{ {
for (const QString& file : result.summaryFiles) for (const QString& file : result.summaryFiles)
{ {
RifSummaryCaseFileInfo fi(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL); RifSummaryCaseFileResultInfo resultFileInfo(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL);
if (!vectorContains(m_summaryFileInfos, fi)) if (!vectorContains(m_summaryFileInfos, resultFileInfo))
{ {
m_summaryFileInfos.push_back(fi); m_summaryFileInfos.push_back(resultFileInfo);
} }
} }
} }
@@ -228,23 +257,23 @@ void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::
{ {
if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL) if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL)
{ {
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, true)); m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, true));
} }
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::NOT_IMPORT) else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::NOT_IMPORT)
{ {
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false)); m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, false));
} }
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES) else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
{ {
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false)); m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, false));
bool hasWarnings = false; bool hasWarnings = false;
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings); std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
for (const auto& rfi : restartFileInfos) for (const auto& rfi : restartFileInfos)
{ {
RifSummaryCaseFileInfo fi(RiaFilePathTools::toInternalSeparator(rfi.fileName), false); RifSummaryCaseFileResultInfo resultFileInfo(RiaFilePathTools::toInternalSeparator(rfi.fileName), false);
if (!vectorContains(m_summaryFileInfos, fi)) if (!vectorContains(m_summaryFileInfos, resultFileInfo))
{ {
m_summaryFileInfos.push_back(fi); m_summaryFileInfos.push_back(resultFileInfo);
} }
} }
} }
@@ -261,10 +290,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings); std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
for (const auto& rfi : restartFileInfos) for (const auto& rfi : restartFileInfos)
{ {
RifSummaryCaseFileInfo fi(RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName), false); QString gridFileName = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName);
if (!m_gridFiles.contains(fi.fileName) && QFileInfo(fi.fileName).exists()) if (!m_gridFiles.contains(gridFileName) && QFileInfo(gridFileName).exists())
{ {
m_gridFiles.push_back(fi.fileName); m_gridFiles.push_back(gridFileName);
} }
} }
@@ -359,20 +388,12 @@ QString RifSummaryCaseRestartSelector::getSummaryFileFromGridFile(const QString&
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RifSummaryCaseFileImportInfo::RifSummaryCaseFileImportInfo(const QString& summaryFileName, RifSummaryCaseFileImportInfo::RifSummaryCaseFileImportInfo(const QString& summaryFileName,
const QString& gridFileName, const QString& gridFileName)
bool failOnSummaryFileImportError /*= false*/)
: m_summaryFileName(summaryFileName) : m_summaryFileName(summaryFileName)
, m_gridFileName(gridFileName) , m_gridFileName(gridFileName)
, m_failOnSummaryFileImportError(failOnSummaryFileImportError) , m_failOnSummaryFileImportError(false)
{ {
} CVF_ASSERT(!m_summaryFileName.isEmpty());
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifSummaryCaseFileImportInfo::failOnSummaryFileError() const
{
return m_failOnSummaryFileImportError;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -390,3 +411,61 @@ const QString& RifSummaryCaseFileImportInfo::gridFileName() const
{ {
return m_gridFileName; return m_gridFileName;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifSummaryCaseFileImportInfo::failOnSummaryFileError() const
{
return m_failOnSummaryFileImportError;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifSummaryCaseFileImportInfo::setFailOnSummaryFileError(bool failOnSummaryFileImportError)
{
m_failOnSummaryFileImportError = failOnSummaryFileImportError;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifSummaryCaseFileResultInfo::RifSummaryCaseFileResultInfo(const QString& summaryFileName, bool includeRestartFiles)
: m_summaryFileName(summaryFileName)
, m_includeRestartFiles(includeRestartFiles)
{
CVF_ASSERT(!m_summaryFileName.isEmpty());
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString& RifSummaryCaseFileResultInfo::summaryFileName() const
{
return m_summaryFileName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifSummaryCaseFileResultInfo::includeRestartFiles() const
{
return m_includeRestartFiles;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifSummaryCaseFileResultInfo::operator<(const RifSummaryCaseFileResultInfo& other) const
{
return m_summaryFileName < other.summaryFileName();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifSummaryCaseFileResultInfo::operator==(const RifSummaryCaseFileResultInfo& other) const
{
return m_summaryFileName == other.summaryFileName();
}

View File

@@ -27,8 +27,8 @@
#include <string> #include <string>
#include <vector> #include <vector>
class RifSummaryCaseFileInfo;
class RifSummaryCaseFileImportInfo; class RifSummaryCaseFileImportInfo;
class RifSummaryCaseFileResultInfo;
//================================================================================================== //==================================================================================================
// //
@@ -43,16 +43,15 @@ public:
void determineFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles); void determineFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles);
void determineFilesToImportFromGridFiles(const QStringList& initialGridFiles); void determineFilesToImportFromGridFiles(const QStringList& initialGridFiles);
void showDialog(bool show) { m_showDialog = show; } void showDialog(bool show);
std::vector<RifSummaryCaseFileInfo> summaryFileInfos() const { return m_summaryFileInfos; } std::vector<RifSummaryCaseFileResultInfo> summaryFileInfos() const;
QStringList gridCaseFiles() const { return m_gridFiles; } QStringList gridCaseFiles() const;
bool foundErrors() const; bool foundErrors() const;
const QStringList& summaryFilesWithErrors() const; const QStringList& summaryFilesWithErrors() const;
QString createCombinedErrorMessage() const; QString createCombinedErrorMessage() const;
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles);
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles); static QString getSummaryFileFromGridFile(const QString& gridFile);
static QString getSummaryFileFromGridFile(const QString& gridFile);
private: private:
void determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles); void determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles);
@@ -63,25 +62,9 @@ private:
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode; RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode; RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
std::vector<RifSummaryCaseFileInfo> m_summaryFileInfos; std::vector<RifSummaryCaseFileResultInfo> m_summaryFileInfos;
QStringList m_gridFiles; QStringList m_gridFiles;
QStringList m_summaryFileErrors; QStringList m_summaryFileErrors;
};
//==================================================================================================
///
//==================================================================================================
class RifSummaryCaseFileInfo
{
public:
RifSummaryCaseFileInfo(const QString _fileName, bool _includeRestartFiles) :
fileName(_fileName), includeRestartFiles(_includeRestartFiles) {}
QString fileName;
bool includeRestartFiles;
bool operator<(const RifSummaryCaseFileInfo& other) const { return fileName < other.fileName; }
bool operator==(const RifSummaryCaseFileInfo& other) const { return fileName == other.fileName; }
}; };
//================================================================================================== //==================================================================================================
@@ -90,14 +73,37 @@ public:
class RifSummaryCaseFileImportInfo class RifSummaryCaseFileImportInfo
{ {
public: public:
RifSummaryCaseFileImportInfo(const QString& summaryFileName, const QString& gridFileName, bool failOnSummaryFileImportError = false); RifSummaryCaseFileImportInfo(const QString& summaryFileName,
const QString& gridFileName);
const QString& summaryFileName() const; const QString& summaryFileName() const;
const QString& gridFileName() const; const QString& gridFileName() const;
bool failOnSummaryFileError() const; bool failOnSummaryFileError() const;
void setFailOnSummaryFileError(bool failOnSummaryFileImportError);
private: private:
QString m_summaryFileName; QString m_summaryFileName;
QString m_gridFileName; QString m_gridFileName;
bool m_failOnSummaryFileImportError; bool m_failOnSummaryFileImportError;
}; };
//==================================================================================================
///
//==================================================================================================
class RifSummaryCaseFileResultInfo
{
public:
RifSummaryCaseFileResultInfo(const QString& summaryFileName,
bool includeRestartFiles);
const QString& summaryFileName() const;
bool includeRestartFiles() const;
bool operator<(const RifSummaryCaseFileResultInfo& other) const;
bool operator==(const RifSummaryCaseFileResultInfo& other) const;
private:
QString m_summaryFileName;
bool m_includeRestartFiles;
};

View File

@@ -117,7 +117,7 @@ void RimSummaryCaseMainCollection::createSummaryCasesFromRelevantEclipseResultCa
QStringList summaryFileNames = RifSummaryCaseRestartSelector::getSummaryFilesFromGridFiles(QStringList({ eclResCase->gridFileName() })); QStringList summaryFileNames = RifSummaryCaseRestartSelector::getSummaryFilesFromGridFiles(QStringList({ eclResCase->gridFileName() }));
if (!summaryFileNames.isEmpty()) if (!summaryFileNames.isEmpty())
{ {
RifSummaryCaseFileInfo fileInfo(summaryFileNames.front(), false); RifSummaryCaseFileResultInfo fileInfo(summaryFileNames.front(), false);
createAndAddSummaryCasesFromFileInfos({ fileInfo }); createAndAddSummaryCasesFromFileInfos({ fileInfo });
} }
} }
@@ -315,7 +315,7 @@ void RimSummaryCaseMainCollection::loadAllSummaryCaseData()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileInfo>& summaryHeaderFileInfos) std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileResultInfo>& summaryHeaderFileInfos)
{ {
std::vector<RimSummaryCase*> newCases = createSummaryCasesFromFileInfos(summaryHeaderFileInfos); std::vector<RimSummaryCase*> newCases = createSummaryCasesFromFileInfos(summaryHeaderFileInfos);
addCases(newCases); addCases(newCases);
@@ -325,16 +325,16 @@ std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCa
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileInfo>& summaryHeaderFileInfos) std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileResultInfo>& summaryHeaderFileInfos)
{ {
RimProject* project = RiaApplication::instance()->project(); RimProject* project = RiaApplication::instance()->project();
std::vector<RimSummaryCase*> sumCases; std::vector<RimSummaryCase*> sumCases;
for (RifSummaryCaseFileInfo fileInfo : summaryHeaderFileInfos) for (RifSummaryCaseFileResultInfo fileInfo : summaryHeaderFileInfos)
{ {
RimEclipseCase* eclCase = nullptr; RimEclipseCase* eclCase = nullptr;
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(fileInfo.fileName); QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(fileInfo.summaryFileName());
if (!gridCaseFile.isEmpty()) if (!gridCaseFile.isEmpty())
{ {
eclCase = project->eclipseCaseFromGridFileName(gridCaseFile); eclCase = project->eclipseCaseFromGridFileName(gridCaseFile);
@@ -344,22 +344,22 @@ std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createSummaryCasesFro
{ {
RimGridSummaryCase* newSumCase = new RimGridSummaryCase(); RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles); newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles());
newSumCase->setAssociatedEclipseCase(eclCase); newSumCase->setAssociatedEclipseCase(eclCase);
newSumCase->createSummaryReaderInterface(); newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity(); newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName); addCaseRealizationParametersIfFound(*newSumCase, fileInfo.summaryFileName());
sumCases.push_back(newSumCase); sumCases.push_back(newSumCase);
} }
else else
{ {
RimFileSummaryCase* newSumCase = new RimFileSummaryCase(); RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles); newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles());
newSumCase->setSummaryHeaderFileName(fileInfo.fileName); newSumCase->setSummaryHeaderFileName(fileInfo.summaryFileName());
newSumCase->createSummaryReaderInterface(); newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity(); newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName); addCaseRealizationParametersIfFound(*newSumCase, fileInfo.summaryFileName());
sumCases.push_back(newSumCase); sumCases.push_back(newSumCase);
} }
} }

View File

@@ -25,7 +25,7 @@
class RimSummaryCase; class RimSummaryCase;
class RimEclipseResultCase; class RimEclipseResultCase;
class RimSummaryCaseCollection; class RimSummaryCaseCollection;
class RifSummaryCaseFileInfo; class RifSummaryCaseFileResultInfo;
//================================================================================================== //==================================================================================================
/// ///
@@ -45,8 +45,8 @@ public:
std::vector<RimSummaryCaseCollection*> summaryCaseCollections() const; std::vector<RimSummaryCaseCollection*> summaryCaseCollections() const;
void createSummaryCasesFromRelevantEclipseResultCases(); void createSummaryCasesFromRelevantEclipseResultCases();
std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileInfo>& summaryHeaderFileInfos); std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileResultInfo>& summaryHeaderFileInfos);
std::vector<RimSummaryCase*> createSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileInfo>& summaryHeaderFileInfos); std::vector<RimSummaryCase*> createSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileResultInfo>& summaryHeaderFileInfos);
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const; RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;
RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const; RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const;