mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2795 Summary Case Import: When importing grids keep going even if summary file import fails.
This commit is contained in:
parent
f456911c80
commit
e953d6800c
@ -193,22 +193,48 @@ RicSummaryCaseRestartDialog::~RicSummaryCaseRestartDialog()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const std::pair<QString /*sum*/, QString /*grid*/>& initialFiles,
|
||||
bool showApplyToAllWidget,
|
||||
ImportOptions defaultSummaryImportOption,
|
||||
ImportOptions defaultGridImportOption,
|
||||
RicSummaryCaseRestartDialogResult *lastResult,
|
||||
QWidget *parent)
|
||||
RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const QString& initialSummaryFile,
|
||||
const QString& initialGridFile,
|
||||
bool failOnSummaryImportError,
|
||||
bool showApplyToAllWidget,
|
||||
ImportOptions defaultSummaryImportOption,
|
||||
ImportOptions defaultGridImportOption,
|
||||
RicSummaryCaseRestartDialogResult* lastResult,
|
||||
QWidget* parent)
|
||||
{
|
||||
RicSummaryCaseRestartDialog dialog(parent);
|
||||
QString initialSummaryFile = initialFiles.first;
|
||||
QString initialGridFile = initialFiles.second;
|
||||
bool handleSummaryFile = false;
|
||||
|
||||
RifRestartFileInfo currentFileInfo;
|
||||
if (!initialSummaryFile.isEmpty())
|
||||
{
|
||||
currentFileInfo = dialog.getFileInfo(initialSummaryFile);
|
||||
|
||||
if (!currentFileInfo.valid())
|
||||
{
|
||||
if (failOnSummaryImportError)
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult(RicSummaryCaseRestartDialogResult::ERROR);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
handleSummaryFile = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool handleGridFile = !initialGridFile.isEmpty();
|
||||
|
||||
// If only grid file is present, return
|
||||
if (initialSummaryFile.isEmpty() && !initialGridFile.isEmpty())
|
||||
if (!handleSummaryFile && !initialGridFile.isEmpty())
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult(RicSummaryCaseRestartDialogResult::OK,
|
||||
RicSummaryCaseRestartDialogResult::Status status = RicSummaryCaseRestartDialogResult::OK;
|
||||
if (!initialSummaryFile.isEmpty())
|
||||
{
|
||||
// We were meant to have a summary file but due to an error we don't.
|
||||
status = RicSummaryCaseRestartDialogResult::SUMMARY_FILE_WARNING;
|
||||
}
|
||||
return RicSummaryCaseRestartDialogResult(status,
|
||||
defaultSummaryImportOption,
|
||||
defaultGridImportOption,
|
||||
{},
|
||||
@ -216,11 +242,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
lastResult && lastResult->applyToAll);
|
||||
}
|
||||
|
||||
RifRestartFileInfo currentFileInfo = dialog.getFileInfo(initialSummaryFile);
|
||||
if (!currentFileInfo.valid())
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult();
|
||||
}
|
||||
|
||||
|
||||
RifReaderEclipseSummary reader;
|
||||
bool hasWarnings = false;
|
||||
@ -311,6 +333,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
dialog.exec();
|
||||
|
||||
RicSummaryCaseRestartDialogResult::Status status = RicSummaryCaseRestartDialogResult::OK;
|
||||
|
||||
if (dialog.result() == QDialog::Rejected)
|
||||
{
|
||||
status = RicSummaryCaseRestartDialogResult::CANCELLED;
|
||||
|
@ -52,7 +52,9 @@ public:
|
||||
RicSummaryCaseRestartDialog(QWidget* parent);
|
||||
~RicSummaryCaseRestartDialog();
|
||||
|
||||
static RicSummaryCaseRestartDialogResult openDialog(const std::pair<QString /*sum*/, QString /*grid*/>& initialFiles,
|
||||
static RicSummaryCaseRestartDialogResult openDialog(const QString& initialSummaryFile,
|
||||
const QString& initialGridFile,
|
||||
bool failOnSummaryImportError,
|
||||
bool showApplyToAllWidget,
|
||||
ImportOptions defaultSummaryImportOption,
|
||||
ImportOptions defaultGridImportOption,
|
||||
@ -106,7 +108,8 @@ public:
|
||||
{
|
||||
OK = 0,
|
||||
CANCELLED = 1,
|
||||
ERROR = 2
|
||||
SUMMARY_FILE_WARNING = 2,
|
||||
ERROR = 3
|
||||
};
|
||||
RicSummaryCaseRestartDialogResult(Status _status = ERROR) :
|
||||
status(_status),
|
||||
|
@ -88,10 +88,10 @@ RifSummaryCaseRestartSelector::~RifSummaryCaseRestartSelector()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles)
|
||||
{
|
||||
std::vector<std::pair<QString, QString>> files;
|
||||
std::vector<RifSummaryCaseFileImportInfo> files;
|
||||
for (QString f : initialSummaryFiles)
|
||||
{
|
||||
files.push_back(std::make_pair(f, ""));
|
||||
files.push_back(RifSummaryCaseFileImportInfo(f, "", true));
|
||||
}
|
||||
determineFilesToImport(files);
|
||||
}
|
||||
@ -101,10 +101,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportFromSummaryFiles(const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportFromGridFiles(const QStringList& initialGridFiles)
|
||||
{
|
||||
std::vector<std::pair<QString, QString>> files;
|
||||
std::vector<RifSummaryCaseFileImportInfo> files;
|
||||
for (QString f : initialGridFiles)
|
||||
{
|
||||
files.push_back(std::make_pair(getSummaryFileFromGridFile(f), f));
|
||||
files.push_back(RifSummaryCaseFileImportInfo(getSummaryFileFromGridFile(f), f));
|
||||
}
|
||||
determineFilesToImport(files);
|
||||
}
|
||||
@ -112,7 +112,7 @@ void RifSummaryCaseRestartSelector::determineFilesToImportFromGridFiles(const QS
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles)
|
||||
{
|
||||
std::vector<RifSummaryCaseFileInfo> fileInfos;
|
||||
if (m_showDialog)
|
||||
@ -129,7 +129,7 @@ void RifSummaryCaseRestartSelector::determineFilesToImport(const std::vector<std
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles,
|
||||
bool enableApplyToAllField)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
@ -138,16 +138,35 @@ void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std
|
||||
m_gridFiles.clear();
|
||||
m_summaryFileErrors.clear();
|
||||
|
||||
for (const std::pair<QString, QString>& initialFile : initialFiles)
|
||||
for (const RifSummaryCaseFileImportInfo& initialFile : initialFiles)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(initialFile,
|
||||
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(initialFile.summaryFileName(),
|
||||
initialFile.gridFileName(),
|
||||
initialFile.failOnSummaryFileError(),
|
||||
enableApplyToAllField,
|
||||
m_defaultSummaryImportMode,
|
||||
m_defaultGridImportMode,
|
||||
&lastResult);
|
||||
switch (result.status)
|
||||
|
||||
lastResult = result;
|
||||
|
||||
if (result.status == RicSummaryCaseRestartDialogResult::CANCELLED)
|
||||
{
|
||||
// Cancel pressed, cancel everything and return early
|
||||
m_summaryFileInfos.clear();
|
||||
m_gridFiles.clear();
|
||||
m_summaryFileErrors.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
if (result.status == RicSummaryCaseRestartDialogResult::ERROR ||
|
||||
result.status == RicSummaryCaseRestartDialogResult::SUMMARY_FILE_WARNING)
|
||||
{
|
||||
// A summary import failure occurred with one of the files. The others may still have worked.
|
||||
m_summaryFileErrors.push_back(initialFile.summaryFileName());
|
||||
}
|
||||
else
|
||||
{
|
||||
case RicSummaryCaseRestartDialogResult::OK:
|
||||
for (const QString& file : result.summaryFiles)
|
||||
{
|
||||
RifSummaryCaseFileInfo fi(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL);
|
||||
@ -156,24 +175,15 @@ void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std
|
||||
m_summaryFileInfos.push_back(fi);
|
||||
}
|
||||
}
|
||||
lastResult = result;
|
||||
}
|
||||
|
||||
if (result.status == RicSummaryCaseRestartDialogResult::OK ||
|
||||
result.status == RicSummaryCaseRestartDialogResult::SUMMARY_FILE_WARNING)
|
||||
{
|
||||
for (const QString& gridFile : result.gridFiles)
|
||||
{
|
||||
m_gridFiles.push_back(gridFile);
|
||||
}
|
||||
break;
|
||||
case RicSummaryCaseRestartDialogResult::ERROR:
|
||||
{
|
||||
// An error occurred with one of the files. The others may still have worked.
|
||||
m_summaryFileErrors.push_back(initialFile.first);
|
||||
break;
|
||||
}
|
||||
case RicSummaryCaseRestartDialogResult::CANCELLED:
|
||||
// Cancel pressed, cancel everything
|
||||
m_summaryFileInfos.clear();
|
||||
m_gridFiles.clear();
|
||||
m_summaryFileErrors.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -181,7 +191,7 @@ void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
@ -189,10 +199,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::
|
||||
m_gridFiles.clear();
|
||||
m_summaryFileErrors.clear();
|
||||
|
||||
for (const std::pair<QString, QString>& initialFile : initialFiles)
|
||||
for (const RifSummaryCaseFileImportInfo& initialFile : initialFiles)
|
||||
{
|
||||
QString initialSummaryFile = RiaFilePathTools::toInternalSeparator(initialFile.first);
|
||||
QString initialGridFile = RiaFilePathTools::toInternalSeparator(initialFile.second);
|
||||
QString initialSummaryFile = RiaFilePathTools::toInternalSeparator(initialFile.summaryFileName());
|
||||
QString initialGridFile = RiaFilePathTools::toInternalSeparator(initialFile.gridFileName());
|
||||
bool handleSummaryFile = false;
|
||||
bool handleGridFile = !initialGridFile.isEmpty();
|
||||
|
||||
@ -203,6 +213,10 @@ void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::
|
||||
if (!fileInfo.valid())
|
||||
{
|
||||
m_summaryFileErrors.push_back(initialSummaryFile);
|
||||
if (initialFile.failOnSummaryFileError())
|
||||
{
|
||||
handleGridFile = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -340,3 +354,39 @@ QString RifSummaryCaseRestartSelector::getSummaryFileFromGridFile(const QString&
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifSummaryCaseFileImportInfo::RifSummaryCaseFileImportInfo(const QString& summaryFileName,
|
||||
const QString& gridFileName,
|
||||
bool failOnSummaryFileImportError /*= false*/)
|
||||
: m_summaryFileName(summaryFileName)
|
||||
, m_gridFileName(gridFileName)
|
||||
, m_failOnSummaryFileImportError(failOnSummaryFileImportError)
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseFileImportInfo::failOnSummaryFileError() const
|
||||
{
|
||||
return m_failOnSummaryFileImportError;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const QString& RifSummaryCaseFileImportInfo::summaryFileName() const
|
||||
{
|
||||
return m_summaryFileName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const QString& RifSummaryCaseFileImportInfo::gridFileName() const
|
||||
{
|
||||
return m_gridFileName;
|
||||
}
|
@ -26,10 +26,9 @@
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
class RifSummaryCaseFileInfo;
|
||||
|
||||
class RifSummaryCaseFileImportInfo;
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
@ -56,19 +55,17 @@ public:
|
||||
static QString getSummaryFileFromGridFile(const QString& gridFile);
|
||||
|
||||
private:
|
||||
void determineFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
|
||||
void determineFilesToImport(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles);
|
||||
void determineFilesToImportByAskingUser(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles, bool enableApplyToAllField);
|
||||
void determineFilesToImportUsingPrefs(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles);
|
||||
|
||||
void determineFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
|
||||
bool enableApplyToAllField);
|
||||
void determineFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
|
||||
bool m_showDialog;
|
||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
|
||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
|
||||
|
||||
bool m_showDialog;
|
||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
|
||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
|
||||
|
||||
std::vector<RifSummaryCaseFileInfo> m_summaryFileInfos;
|
||||
QStringList m_gridFiles;
|
||||
QStringList m_summaryFileErrors;
|
||||
std::vector<RifSummaryCaseFileInfo> m_summaryFileInfos;
|
||||
QStringList m_gridFiles;
|
||||
QStringList m_summaryFileErrors;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
@ -86,3 +83,21 @@ public:
|
||||
bool operator<(const RifSummaryCaseFileInfo& other) const { return fileName < other.fileName; }
|
||||
bool operator==(const RifSummaryCaseFileInfo& other) const { return fileName == other.fileName; }
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RifSummaryCaseFileImportInfo
|
||||
{
|
||||
public:
|
||||
RifSummaryCaseFileImportInfo(const QString& summaryFileName, const QString& gridFileName, bool failOnSummaryFileImportError = false);
|
||||
|
||||
const QString& summaryFileName() const;
|
||||
const QString& gridFileName() const;
|
||||
bool failOnSummaryFileError() const;
|
||||
|
||||
private:
|
||||
QString m_summaryFileName;
|
||||
QString m_gridFileName;
|
||||
bool m_failOnSummaryFileImportError;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user