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;
if(noDialog) selector.showDialog(false);
selector.determineFilesToImportFromGridFiles(fileNames);
std::vector<RifSummaryCaseFileInfo> summaryFileInfos = selector.summaryFileInfos();
std::vector<RifSummaryCaseFileResultInfo> summaryFileInfos = selector.summaryFileInfos();
// Import eclipse case files
for (const QString& gridCaseFile : selector.gridCaseFiles())

View File

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

View File

@@ -91,7 +91,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportFromSummaryFiles(const
std::vector<RifSummaryCaseFileImportInfo> files;
for (QString f : initialSummaryFiles)
{
files.push_back(RifSummaryCaseFileImportInfo(f, "", true));
RifSummaryCaseFileImportInfo importInfo(f, "");
importInfo.setFailOnSummaryFileError(true);
files.push_back(importInfo);
}
determineFilesToImport(files);
}
@@ -104,17 +107,43 @@ void RifSummaryCaseRestartSelector::determineFilesToImportFromGridFiles(const QS
std::vector<RifSummaryCaseFileImportInfo> files;
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);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
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)
{
std::vector<RifSummaryCaseFileInfo> fileInfos;
std::vector<RifSummaryCaseFileImportInfo> fileInfos;
if (m_showDialog)
{
bool enableApplyToAllField = initialFiles.size() > 1;
@@ -169,10 +198,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std
{
for (const QString& file : result.summaryFiles)
{
RifSummaryCaseFileInfo fi(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL);
if (!vectorContains(m_summaryFileInfos, fi))
RifSummaryCaseFileResultInfo resultFileInfo(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL);
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)
{
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, true));
m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, true));
}
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)
{
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, false));
bool hasWarnings = false;
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
for (const auto& rfi : restartFileInfos)
{
RifSummaryCaseFileInfo fi(RiaFilePathTools::toInternalSeparator(rfi.fileName), false);
if (!vectorContains(m_summaryFileInfos, fi))
RifSummaryCaseFileResultInfo resultFileInfo(RiaFilePathTools::toInternalSeparator(rfi.fileName), false);
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);
for (const auto& rfi : restartFileInfos)
{
RifSummaryCaseFileInfo fi(RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName), false);
if (!m_gridFiles.contains(fi.fileName) && QFileInfo(fi.fileName).exists())
QString gridFileName = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName);
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,
const QString& gridFileName,
bool failOnSummaryFileImportError /*= false*/)
const QString& gridFileName)
: m_summaryFileName(summaryFileName)
, m_gridFileName(gridFileName)
, m_failOnSummaryFileImportError(failOnSummaryFileImportError)
, m_failOnSummaryFileImportError(false)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifSummaryCaseFileImportInfo::failOnSummaryFileError() const
{
return m_failOnSummaryFileImportError;
CVF_ASSERT(!m_summaryFileName.isEmpty());
}
//--------------------------------------------------------------------------------------------------
@@ -390,3 +411,61 @@ const QString& RifSummaryCaseFileImportInfo::gridFileName() const
{
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 <vector>
class RifSummaryCaseFileInfo;
class RifSummaryCaseFileImportInfo;
class RifSummaryCaseFileResultInfo;
//==================================================================================================
//
@@ -43,16 +43,15 @@ public:
void determineFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles);
void determineFilesToImportFromGridFiles(const QStringList& initialGridFiles);
void showDialog(bool show) { m_showDialog = show; }
std::vector<RifSummaryCaseFileInfo> summaryFileInfos() const { return m_summaryFileInfos; }
QStringList gridCaseFiles() const { return m_gridFiles; }
bool foundErrors() const;
const QStringList& summaryFilesWithErrors() const;
QString createCombinedErrorMessage() const;
void showDialog(bool show);
std::vector<RifSummaryCaseFileResultInfo> summaryFileInfos() const;
QStringList gridCaseFiles() const;
bool foundErrors() const;
const QStringList& summaryFilesWithErrors() const;
QString createCombinedErrorMessage() const;
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles);
static QString getSummaryFileFromGridFile(const QString& gridFile);
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles);
static QString getSummaryFileFromGridFile(const QString& gridFile);
private:
void determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles);
@@ -63,25 +62,9 @@ private:
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
std::vector<RifSummaryCaseFileInfo> m_summaryFileInfos;
QStringList m_gridFiles;
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; }
std::vector<RifSummaryCaseFileResultInfo> m_summaryFileInfos;
QStringList m_gridFiles;
QStringList m_summaryFileErrors;
};
//==================================================================================================
@@ -90,14 +73,37 @@ public:
class RifSummaryCaseFileImportInfo
{
public:
RifSummaryCaseFileImportInfo(const QString& summaryFileName, const QString& gridFileName, bool failOnSummaryFileImportError = false);
RifSummaryCaseFileImportInfo(const QString& summaryFileName,
const QString& gridFileName);
const QString& summaryFileName() const;
const QString& gridFileName() const;
bool failOnSummaryFileError() const;
void setFailOnSummaryFileError(bool failOnSummaryFileImportError);
private:
QString m_summaryFileName;
QString m_gridFileName;
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() }));
if (!summaryFileNames.isEmpty())
{
RifSummaryCaseFileInfo fileInfo(summaryFileNames.front(), false);
RifSummaryCaseFileResultInfo fileInfo(summaryFileNames.front(), false);
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);
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();
std::vector<RimSummaryCase*> sumCases;
for (RifSummaryCaseFileInfo fileInfo : summaryHeaderFileInfos)
for (RifSummaryCaseFileResultInfo fileInfo : summaryHeaderFileInfos)
{
RimEclipseCase* eclCase = nullptr;
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(fileInfo.fileName);
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(fileInfo.summaryFileName());
if (!gridCaseFile.isEmpty())
{
eclCase = project->eclipseCaseFromGridFileName(gridCaseFile);
@@ -344,22 +344,22 @@ std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createSummaryCasesFro
{
RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles());
newSumCase->setAssociatedEclipseCase(eclCase);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName);
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.summaryFileName());
sumCases.push_back(newSumCase);
}
else
{
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setSummaryHeaderFileName(fileInfo.fileName);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles());
newSumCase->setSummaryHeaderFileName(fileInfo.summaryFileName());
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName);
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.summaryFileName());
sumCases.push_back(newSumCase);
}
}

View File

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