mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2794 Summary Case Import: Improve error reporting.
* When an error is found with one summary case file, continue importing all the files that worked. * Report an error in the log window and a message box afterwards about the case that failed. * Fix crash when loading .EGRID file without a summary case.
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "../SummaryPlotCommands/RicNewSummaryPlotFeature.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaPreferences.h"
|
||||
|
||||
#include "RifEclipseSummaryTools.h"
|
||||
@@ -51,6 +52,7 @@
|
||||
#include "cafProgressInfo.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -64,11 +66,8 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile(const QStringList& file
|
||||
// Get list of files to import
|
||||
RifSummaryCaseRestartSelector selector;
|
||||
if(noDialog) selector.showDialog(false);
|
||||
std::vector<RifSummaryCaseFileInfo> summaryFileInfos;
|
||||
if (selector.getFilesToImportFromGridFiles(fileNames))
|
||||
{
|
||||
summaryFileInfos = selector.summaryFileInfos();
|
||||
}
|
||||
selector.determineFilesToImportFromGridFiles(fileNames);
|
||||
std::vector<RifSummaryCaseFileInfo> summaryFileInfos = selector.summaryFileInfos();
|
||||
|
||||
// Import eclipse case files
|
||||
for (const QString& gridCaseFile : selector.gridCaseFiles())
|
||||
@@ -80,52 +79,62 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile(const QStringList& file
|
||||
}
|
||||
|
||||
// Import summary cases
|
||||
RimSummaryCaseMainCollection* sumCaseColl = project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
std::vector<RimSummaryCase*> newSumCases = sumCaseColl->createAndAddSummaryCasesFromFileInfos(summaryFileInfos);
|
||||
|
||||
for (RimSummaryCase* newSumCase : newSumCases)
|
||||
if (!summaryFileInfos.empty())
|
||||
{
|
||||
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(newSumCase->summaryHeaderFilename());
|
||||
RimEclipseCase* gridCase = project->eclipseCaseFromGridFileName(gridCaseFile);
|
||||
if (gridCase)
|
||||
RimSummaryCaseMainCollection* sumCaseColl = project->activeOilField() ? project->activeOilField()->summaryCaseMainCollection() : nullptr;
|
||||
std::vector<RimSummaryCase*> newSumCases = sumCaseColl->createAndAddSummaryCasesFromFileInfos(summaryFileInfos);
|
||||
|
||||
for (RimSummaryCase* newSumCase : newSumCases)
|
||||
{
|
||||
RimSummaryCase* existingFileSummaryCase = sumCaseColl->findSummaryCaseFromFileName(newSumCase->summaryHeaderFilename());
|
||||
if (existingFileSummaryCase)
|
||||
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(newSumCase->summaryHeaderFilename());
|
||||
RimEclipseCase* gridCase = project->eclipseCaseFromGridFileName(gridCaseFile);
|
||||
if (gridCase)
|
||||
{
|
||||
// Replace all occurrences of file sum with ecl sum
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> referringObjects;
|
||||
existingFileSummaryCase->objectsWithReferringPtrFields(referringObjects);
|
||||
|
||||
// UI settings of a curve filter is updated based
|
||||
// on the new case association for the curves in the curve filter
|
||||
// UI is updated by loadDataAndUpdate()
|
||||
|
||||
for (caf::PdmObjectHandle* objHandle : referringObjects)
|
||||
RimSummaryCase* existingFileSummaryCase = sumCaseColl->findSummaryCaseFromFileName(newSumCase->summaryHeaderFilename());
|
||||
if (existingFileSummaryCase)
|
||||
{
|
||||
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
|
||||
if (summaryCurve)
|
||||
// Replace all occurrences of file sum with ecl sum
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> referringObjects;
|
||||
existingFileSummaryCase->objectsWithReferringPtrFields(referringObjects);
|
||||
|
||||
// UI settings of a curve filter is updated based
|
||||
// on the new case association for the curves in the curve filter
|
||||
// UI is updated by loadDataAndUpdate()
|
||||
|
||||
for (caf::PdmObjectHandle* objHandle : referringObjects)
|
||||
{
|
||||
RimSummaryCurveCollection* parentCollection = nullptr;
|
||||
summaryCurve->firstAncestorOrThisOfType(parentCollection);
|
||||
if (parentCollection)
|
||||
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
|
||||
if (summaryCurve)
|
||||
{
|
||||
parentCollection->loadDataAndUpdate(true);
|
||||
parentCollection->updateConnectedEditors();
|
||||
break;
|
||||
RimSummaryCurveCollection* parentCollection = nullptr;
|
||||
summaryCurve->firstAncestorOrThisOfType(parentCollection);
|
||||
if (parentCollection)
|
||||
{
|
||||
parentCollection->loadDataAndUpdate(true);
|
||||
parentCollection->updateConnectedEditors();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sumCaseColl->removeCase(existingFileSummaryCase);
|
||||
|
||||
delete existingFileSummaryCase;
|
||||
|
||||
}
|
||||
|
||||
sumCaseColl->removeCase(existingFileSummaryCase);
|
||||
|
||||
delete existingFileSummaryCase;
|
||||
|
||||
sumCaseColl->updateAllRequiredEditors();
|
||||
}
|
||||
|
||||
sumCaseColl->updateAllRequiredEditors();
|
||||
}
|
||||
}
|
||||
|
||||
if (selector.foundErrors())
|
||||
{
|
||||
QString errorMessage = selector.createCombinedErrorMessage();
|
||||
RiaLogging::error(errorMessage);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -73,15 +73,18 @@ void RicImportSummaryCaseFeature::onActionTriggered(bool isChecked)
|
||||
|
||||
if (fileNames.isEmpty()) return;
|
||||
|
||||
if (RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(fileNames))
|
||||
std::vector<RimSummaryCase*> newCases;
|
||||
if (RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(fileNames, &newCases))
|
||||
{
|
||||
for(const auto& fileName : fileNames) RiaApplication::instance()->addToRecentFiles(fileName);
|
||||
for (const RimSummaryCase* newCase : newCases)
|
||||
{
|
||||
RiaApplication::instance()->addToRecentFiles(newCase->summaryHeaderFilename());
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<RimCase*> cases;
|
||||
app->project()->allCases(cases);
|
||||
|
||||
if (cases.size() == 0)
|
||||
if (cases.size() == 0 && !newCases.empty())
|
||||
{
|
||||
RiuMainWindow::instance()->close();
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "RicImportSummaryCasesFeature.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaPreferences.h"
|
||||
|
||||
#include "RicFileHierarchyDialog.h"
|
||||
@@ -40,6 +41,7 @@
|
||||
|
||||
#include <QAction>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
|
||||
CAF_CMD_SOURCE_INIT(RicImportSummaryCasesFeature, "RicImportSummaryCasesFeature");
|
||||
|
||||
@@ -116,16 +118,24 @@ bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList
|
||||
if (!sumCaseColl) return false;
|
||||
|
||||
RifSummaryCaseRestartSelector fileSelector;
|
||||
std::vector<RifSummaryCaseFileInfo> importFileInfos;
|
||||
if (fileSelector.getFilesToImportFromSummaryFiles(fileNames))
|
||||
fileSelector.determineFilesToImportFromSummaryFiles(fileNames);
|
||||
|
||||
std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.summaryFileInfos();
|
||||
|
||||
if (!importFileInfos.empty())
|
||||
{
|
||||
importFileInfos = fileSelector.summaryFileInfos();
|
||||
std::vector<RimSummaryCase*> sumCases = sumCaseColl->createSummaryCasesFromFileInfos(importFileInfos);
|
||||
if (newCases) newCases->insert(newCases->end(), sumCases.begin(), sumCases.end());
|
||||
}
|
||||
|
||||
std::vector<RimSummaryCase*> sumCases = sumCaseColl->createSummaryCasesFromFileInfos(importFileInfos);
|
||||
if (fileSelector.foundErrors())
|
||||
{
|
||||
QString errorMessage = fileSelector.createCombinedErrorMessage();
|
||||
RiaLogging::error(errorMessage);
|
||||
QMessageBox::warning(NULL, QString("Problem Importing Summary Case File(s)"), errorMessage);
|
||||
}
|
||||
|
||||
if (newCases) newCases->insert(newCases->end(), sumCases.begin(), sumCases.end());
|
||||
return true;
|
||||
return !importFileInfos.empty();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -208,7 +208,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
// If only grid file is present, return
|
||||
if (initialSummaryFile.isEmpty() && !initialGridFile.isEmpty())
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult(true,
|
||||
return RicSummaryCaseRestartDialogResult(RicSummaryCaseRestartDialogResult::OK,
|
||||
defaultSummaryImportOption,
|
||||
defaultGridImportOption,
|
||||
{},
|
||||
@@ -229,7 +229,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
// If no restart files are found and no warnings, do not show dialog
|
||||
if (originFileInfos.empty() &&!hasWarnings)
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult(true, NOT_IMPORT, NOT_IMPORT, QStringList({ initialSummaryFile }), QStringList({ initialGridFile }), false);
|
||||
return RicSummaryCaseRestartDialogResult(RicSummaryCaseRestartDialogResult::OK, NOT_IMPORT, NOT_IMPORT, QStringList({ initialSummaryFile }), QStringList({ initialGridFile }), false);
|
||||
}
|
||||
|
||||
RicSummaryCaseRestartDialogResult dialogResult;
|
||||
@@ -310,7 +310,13 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
dialog.resize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_INIT_HEIGHT);
|
||||
dialog.exec();
|
||||
|
||||
dialogResult = RicSummaryCaseRestartDialogResult(dialog.result() == QDialog::Accepted,
|
||||
RicSummaryCaseRestartDialogResult::Status status = RicSummaryCaseRestartDialogResult::OK;
|
||||
if (dialog.result() == QDialog::Rejected)
|
||||
{
|
||||
status = RicSummaryCaseRestartDialogResult::CANCELLED;
|
||||
}
|
||||
|
||||
dialogResult = RicSummaryCaseRestartDialogResult(status,
|
||||
dialog.selectedSummaryImportOption(),
|
||||
dialog.selectedGridImportOption(),
|
||||
{},
|
||||
@@ -318,9 +324,9 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
||||
dialog.applyToAllSelected());
|
||||
}
|
||||
|
||||
if (!dialogResult.ok)
|
||||
if (dialogResult.status != RicSummaryCaseRestartDialogResult::OK)
|
||||
{
|
||||
return RicSummaryCaseRestartDialogResult(false, NOT_IMPORT, NOT_IMPORT, QStringList(), QStringList(), false);
|
||||
return RicSummaryCaseRestartDialogResult(dialogResult.status, NOT_IMPORT, NOT_IMPORT, QStringList(), QStringList(), false);
|
||||
}
|
||||
|
||||
dialogResult.summaryFiles.push_back(RiaFilePathTools::toInternalSeparator(initialSummaryFile));
|
||||
|
||||
@@ -102,19 +102,25 @@ private:
|
||||
class RicSummaryCaseRestartDialogResult
|
||||
{
|
||||
public:
|
||||
RicSummaryCaseRestartDialogResult() :
|
||||
ok(false),
|
||||
enum Status
|
||||
{
|
||||
OK = 0,
|
||||
CANCELLED = 1,
|
||||
ERROR = 2
|
||||
};
|
||||
RicSummaryCaseRestartDialogResult(Status _status = ERROR) :
|
||||
status(_status),
|
||||
summaryImportOption(RicSummaryCaseRestartDialog::IMPORT_ALL),
|
||||
gridImportOption(RicSummaryCaseRestartDialog::NOT_IMPORT),
|
||||
applyToAll(false) {}
|
||||
|
||||
RicSummaryCaseRestartDialogResult(bool _ok,
|
||||
RicSummaryCaseRestartDialogResult(Status _status,
|
||||
RicSummaryCaseRestartDialog::ImportOptions _summaryImportOption,
|
||||
RicSummaryCaseRestartDialog::ImportOptions _gridImportOption,
|
||||
QStringList _summaryFiles,
|
||||
QStringList _gridFiles,
|
||||
bool _applyToAll) :
|
||||
ok(_ok),
|
||||
status(_status),
|
||||
summaryImportOption(_summaryImportOption),
|
||||
gridImportOption(_gridImportOption),
|
||||
summaryFiles(_summaryFiles),
|
||||
@@ -123,7 +129,7 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
bool ok;
|
||||
Status status;
|
||||
RicSummaryCaseRestartDialog::ImportOptions summaryImportOption;
|
||||
RicSummaryCaseRestartDialog::ImportOptions gridImportOption;
|
||||
QStringList summaryFiles;
|
||||
|
||||
@@ -147,18 +147,6 @@ std::vector<RifRestartFileInfo> RifReaderEclipseSummary::getRestartFiles(const Q
|
||||
currFile.fileName = headerFileName;
|
||||
while(!currFile.fileName.isEmpty())
|
||||
{
|
||||
QString prevFile = currFile.fileName;
|
||||
|
||||
currFile = getRestartFile(currFile.fileName);
|
||||
|
||||
// Fix to stop potential infinite loop
|
||||
if (currFile.fileName == prevFile)
|
||||
{
|
||||
m_warnings.push_back("RifReaderEclipseSummary: Restart file reference loop detected");
|
||||
*hasWarnings = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// Due to a weakness in libecl regarding restart summary header file selection,
|
||||
// do some extra checking
|
||||
{
|
||||
@@ -187,6 +175,17 @@ std::vector<RifRestartFileInfo> RifReaderEclipseSummary::getRestartFiles(const Q
|
||||
break;
|
||||
}
|
||||
}
|
||||
QString prevFile = currFile.fileName;
|
||||
currFile = getRestartFile(currFile.fileName);
|
||||
|
||||
// Fix to stop potential infinite loop
|
||||
if (currFile.fileName == prevFile)
|
||||
{
|
||||
m_warnings.push_back("RifReaderEclipseSummary: Restart file reference loop detected");
|
||||
*hasWarnings = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!currFile.fileName.isEmpty())
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "RicSummaryCaseRestartDialog.h"
|
||||
|
||||
#include "RifEclipseSummaryTools.h"
|
||||
#include "RifReaderEclipseSummary.h"
|
||||
|
||||
#include <string>
|
||||
#include <assert.h>
|
||||
@@ -85,54 +86,58 @@ RifSummaryCaseRestartSelector::~RifSummaryCaseRestartSelector()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseRestartSelector::getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles)
|
||||
{
|
||||
std::vector<std::pair<QString, QString>> files;
|
||||
for (QString f : initialSummaryFiles)
|
||||
{
|
||||
files.push_back(std::make_pair(f, ""));
|
||||
}
|
||||
return getFilesToImport(files);
|
||||
determineFilesToImport(files);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseRestartSelector::getFilesToImportFromGridFiles(const QStringList& initialGridFiles)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportFromGridFiles(const QStringList& initialGridFiles)
|
||||
{
|
||||
std::vector<std::pair<QString, QString>> files;
|
||||
for (QString f : initialGridFiles)
|
||||
{
|
||||
files.push_back(std::make_pair(getSummaryFileFromGridFile(f), f));
|
||||
}
|
||||
return getFilesToImport(files);
|
||||
determineFilesToImport(files);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseRestartSelector::getFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
|
||||
{
|
||||
std::vector<RifSummaryCaseFileInfo> fileInfos;
|
||||
if (m_showDialog)
|
||||
{
|
||||
bool enableApplyToAllField = initialFiles.size() > 1;
|
||||
return getFilesToImportByAskingUser(initialFiles, enableApplyToAllField);
|
||||
determineFilesToImportByAskingUser(initialFiles, enableApplyToAllField);
|
||||
}
|
||||
else
|
||||
{
|
||||
return getFilesToImportUsingPrefs(initialFiles);
|
||||
determineFilesToImportUsingPrefs(initialFiles);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
|
||||
bool enableApplyToAllField)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
|
||||
bool enableApplyToAllField)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
m_summaryFileInfos.clear();
|
||||
m_gridFiles.clear();
|
||||
m_summaryFileErrors.clear();
|
||||
|
||||
for (const std::pair<QString, QString>& initialFile : initialFiles)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(initialFile,
|
||||
@@ -140,8 +145,9 @@ bool RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const std::vect
|
||||
m_defaultSummaryImportMode,
|
||||
m_defaultGridImportMode,
|
||||
&lastResult);
|
||||
if (result.ok)
|
||||
switch (result.status)
|
||||
{
|
||||
case RicSummaryCaseRestartDialogResult::OK:
|
||||
for (const QString& file : result.summaryFiles)
|
||||
{
|
||||
RifSummaryCaseFileInfo fi(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL);
|
||||
@@ -156,54 +162,76 @@ bool RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const std::vect
|
||||
{
|
||||
m_gridFiles.push_back(gridFile);
|
||||
}
|
||||
}
|
||||
else
|
||||
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();
|
||||
return false;
|
||||
m_summaryFileErrors.clear();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
|
||||
void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
|
||||
{
|
||||
RicSummaryCaseRestartDialogResult lastResult;
|
||||
|
||||
m_summaryFileInfos.clear();
|
||||
m_gridFiles.clear();
|
||||
m_summaryFileErrors.clear();
|
||||
|
||||
for (const std::pair<QString, QString>& initialFile : initialFiles)
|
||||
{
|
||||
QString initialSummaryFile = RiaFilePathTools::toInternalSeparator(initialFile.first);
|
||||
QString initialGridFile = RiaFilePathTools::toInternalSeparator(initialFile.second);
|
||||
bool handleGridFile = !initialGridFile.isEmpty();
|
||||
bool handleSummaryFile = false;
|
||||
bool handleGridFile = !initialGridFile.isEmpty();
|
||||
|
||||
if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL)
|
||||
{
|
||||
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, true));
|
||||
}
|
||||
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::NOT_IMPORT)
|
||||
{
|
||||
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
|
||||
}
|
||||
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
|
||||
{
|
||||
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
|
||||
|
||||
RifReaderEclipseSummary reader;
|
||||
bool hasWarnings = false;
|
||||
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
|
||||
for (const auto& rfi : restartFileInfos)
|
||||
RifReaderEclipseSummary reader;
|
||||
if (!initialSummaryFile.isEmpty())
|
||||
{
|
||||
RifRestartFileInfo fileInfo = reader.getFileInfo(initialSummaryFile);
|
||||
if (!fileInfo.valid())
|
||||
{
|
||||
RifSummaryCaseFileInfo fi(rfi.fileName, false);
|
||||
if (!vectorContains(m_summaryFileInfos, fi))
|
||||
m_summaryFileErrors.push_back(initialSummaryFile);
|
||||
}
|
||||
else
|
||||
{
|
||||
handleSummaryFile = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (handleSummaryFile)
|
||||
{
|
||||
if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL)
|
||||
{
|
||||
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, true));
|
||||
}
|
||||
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::NOT_IMPORT)
|
||||
{
|
||||
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
|
||||
}
|
||||
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
|
||||
{
|
||||
m_summaryFileInfos.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
|
||||
bool hasWarnings = false;
|
||||
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
|
||||
for (const auto& rfi : restartFileInfos)
|
||||
{
|
||||
m_summaryFileInfos.push_back(fi);
|
||||
RifSummaryCaseFileInfo fi(RiaFilePathTools::toInternalSeparator(rfi.fileName), false);
|
||||
if (!vectorContains(m_summaryFileInfos, fi))
|
||||
{
|
||||
m_summaryFileInfos.push_back(fi);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -231,9 +259,46 @@ bool RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const std::vector
|
||||
for (const QString& warning : reader.warnings()) RiaLogging::error(warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifSummaryCaseRestartSelector::foundErrors() const
|
||||
{
|
||||
return !m_summaryFileErrors.empty();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const QStringList& RifSummaryCaseRestartSelector::summaryFilesWithErrors() const
|
||||
{
|
||||
return m_summaryFileErrors;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RifSummaryCaseRestartSelector::createCombinedErrorMessage() const
|
||||
{
|
||||
QString errorMessage;
|
||||
if (!m_summaryFileErrors.empty())
|
||||
{
|
||||
errorMessage = QString("Failed to import the following summary file");
|
||||
if (m_summaryFileErrors.size() > 1)
|
||||
{
|
||||
errorMessage += QString("s");
|
||||
}
|
||||
errorMessage += QString(":\n");
|
||||
for (const QString& fileWarning : m_summaryFileErrors)
|
||||
{
|
||||
errorMessage += fileWarning + QString("\n");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return errorMessage;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -41,22 +41,26 @@ public:
|
||||
RifSummaryCaseRestartSelector();
|
||||
~RifSummaryCaseRestartSelector();
|
||||
|
||||
bool getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles);
|
||||
bool getFilesToImportFromGridFiles(const QStringList& initialGridFiles);
|
||||
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;
|
||||
|
||||
|
||||
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles);
|
||||
static QString getSummaryFileFromGridFile(const QString& gridFile);
|
||||
|
||||
private:
|
||||
bool getFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
|
||||
void determineFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
|
||||
|
||||
bool getFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
|
||||
void determineFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
|
||||
bool enableApplyToAllField);
|
||||
bool getFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
|
||||
void determineFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
|
||||
|
||||
bool m_showDialog;
|
||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
|
||||
@@ -64,6 +68,7 @@ private:
|
||||
|
||||
std::vector<RifSummaryCaseFileInfo> m_summaryFileInfos;
|
||||
QStringList m_gridFiles;
|
||||
QStringList m_summaryFileErrors;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
|
||||
Reference in New Issue
Block a user