#2766 Bugfix. Import egrid files even though there are no associated summary files

This commit is contained in:
Bjørn Erik Jensen 2018-04-20 08:27:42 +02:00
parent 9e40ba39c8
commit c3ae45e748
6 changed files with 111 additions and 75 deletions

View File

@ -64,8 +64,11 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile(const QStringList& file
// Get list of files to import
RifSummaryCaseRestartSelector selector;
if(noDialog) selector.showDialog(false);
selector.buildGridCaseFileList(true);
std::vector<RifSummaryCaseFileInfo> summaryFileInfos = selector.getFilesToImportFromGridFiles(fileNames);
std::vector<RifSummaryCaseFileInfo> summaryFileInfos;
if (selector.getFilesToImportFromGridFiles(fileNames))
{
summaryFileInfos = selector.summaryFileInfos();
}
// Import eclipse case files
for (const QString& gridCaseFile : selector.gridCaseFiles())

View File

@ -116,7 +116,11 @@ bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList
if (!sumCaseColl) return false;
RifSummaryCaseRestartSelector fileSelector;
std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImportFromSummaryFiles(fileNames);
std::vector<RifSummaryCaseFileInfo> importFileInfos;
if (fileSelector.getFilesToImportFromSummaryFiles(fileNames))
{
importFileInfos = fileSelector.summaryFileInfos();
}
std::vector<RimSummaryCase*> sumCases = sumCaseColl->createSummaryCasesFromFileInfos(importFileInfos);

View File

@ -193,17 +193,30 @@ RicSummaryCaseRestartDialog::~RicSummaryCaseRestartDialog()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const QString& summaryHeaderFile,
RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const std::pair<QString /*sum*/, QString /*grid*/>& initialFiles,
bool showApplyToAllWidget,
bool buildGridCaseFileList,
ImportOptions defaultSummaryImportOption,
ImportOptions defaultGridImportOption,
RicSummaryCaseRestartDialogResult *lastResult,
QWidget *parent)
{
RicSummaryCaseRestartDialog dialog(parent);
QString initialSummaryFile = initialFiles.first;
QString initialGridFile = initialFiles.second;
bool handleGridFile = !initialGridFile.isEmpty();
RifRestartFileInfo currentFileInfo = dialog.getFileInfo(summaryHeaderFile);
// If only grid file is present, return
if (initialSummaryFile.isEmpty() && !initialGridFile.isEmpty())
{
return RicSummaryCaseRestartDialogResult(true,
defaultSummaryImportOption,
defaultGridImportOption,
{},
QStringList({ initialGridFile }),
lastResult && lastResult->applyToAll);
}
RifRestartFileInfo currentFileInfo = dialog.getFileInfo(initialSummaryFile);
if (!currentFileInfo.valid())
{
return RicSummaryCaseRestartDialogResult();
@ -211,13 +224,12 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
RifReaderEclipseSummary reader;
bool hasWarnings = false;
std::vector<RifRestartFileInfo> originFileInfos = reader.getRestartFiles(summaryHeaderFile, &hasWarnings);
std::vector<RifRestartFileInfo> originFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
// If no restart files are found and no warnings, do not show dialog
if (originFileInfos.empty() &&!hasWarnings)
{
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(summaryHeaderFile);
return RicSummaryCaseRestartDialogResult(true, NOT_IMPORT, NOT_IMPORT, QStringList({ summaryHeaderFile }), QStringList({ gridCaseFile }), false);
return RicSummaryCaseRestartDialogResult(true, NOT_IMPORT, NOT_IMPORT, QStringList({ initialSummaryFile }), QStringList({ initialGridFile }), false);
}
RicSummaryCaseRestartDialogResult dialogResult;
@ -238,12 +250,11 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
std::vector<RifRestartFileInfo> originSummaryFileInfos;
std::vector<RifRestartFileInfo> originGridFileInfos;
// Build lists of files
if (buildGridCaseFileList)
// Grid file
if (handleGridFile)
{
dialog.m_currentFilesGroup->setTitle("Current Grid and Summary Files");
QString gridFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(currentFileInfo.fileName);
currentFileInfos.push_back(RifRestartFileInfo(gridFile, currentFileInfo.startDate, currentFileInfo.endDate));
currentFileInfos.push_back(RifRestartFileInfo(initialGridFile, currentFileInfo.startDate, currentFileInfo.endDate));
for (const auto& ofi : originFileInfos)
{
@ -269,7 +280,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
case ImportOptions::NOT_IMPORT: dialog.m_summaryNotReadBtn->setChecked(true); break;
}
if (buildGridCaseFileList)
if (handleGridFile)
{
switch (defaultGridImportOption)
{
@ -312,7 +323,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
return RicSummaryCaseRestartDialogResult(false, NOT_IMPORT, NOT_IMPORT, QStringList(), QStringList(), false);
}
dialogResult.summaryFiles.push_back(RiaFilePathTools::toInternalSeparator(summaryHeaderFile));
dialogResult.summaryFiles.push_back(RiaFilePathTools::toInternalSeparator(initialSummaryFile));
if (dialogResult.summaryImportOption == SEPARATE_CASES)
{
for (const auto& ofi : originFileInfos)
@ -321,17 +332,16 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
}
}
if (buildGridCaseFileList)
if (handleGridFile)
{
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(summaryHeaderFile);
dialogResult.gridFiles.push_back(gridCaseFile);
dialogResult.gridFiles.push_back(initialGridFile);
if (dialogResult.gridImportOption == SEPARATE_CASES)
{
for (const auto& ofi : originFileInfos)
{
QString gridFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(ofi.fileName);
if (buildGridCaseFileList && !gridCaseFile.isEmpty()) dialogResult.gridFiles.push_back(gridFile);
if (handleGridFile) dialogResult.gridFiles.push_back(gridFile);
}
}
}

View File

@ -52,9 +52,8 @@ public:
RicSummaryCaseRestartDialog(QWidget* parent);
~RicSummaryCaseRestartDialog();
static RicSummaryCaseRestartDialogResult openDialog(const QString& summaryHeaderFile,
static RicSummaryCaseRestartDialogResult openDialog(const std::pair<QString /*sum*/, QString /*grid*/>& initialFiles,
bool showApplyToAllWidget,
bool buildGridCaseFileList,
ImportOptions defaultSummaryImportOption,
ImportOptions defaultGridImportOption,
RicSummaryCaseRestartDialogResult *lastResult = nullptr,

View File

@ -70,7 +70,7 @@ RifSummaryCaseRestartSelector::RifSummaryCaseRestartSelector()
m_defaultSummaryImportMode = mapReadOption(prefs->summaryImportMode());
m_defaultGridImportMode = mapReadOption(prefs->gridImportMode());
m_buildGridFileList = false;
//m_buildGridFileList = false;
m_gridFiles.clear();
}
@ -85,52 +85,58 @@ RifSummaryCaseRestartSelector::~RifSummaryCaseRestartSelector()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles)
bool RifSummaryCaseRestartSelector::getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles)
{
return getFilesToImport(initialSummaryFiles);
std::vector<std::pair<QString, QString>> files;
for (QString f : initialSummaryFiles)
{
files.push_back(std::make_pair(f, ""));
}
return getFilesToImport(files);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportFromGridFiles(const QStringList& initialGridFiles)
bool RifSummaryCaseRestartSelector::getFilesToImportFromGridFiles(const QStringList& initialGridFiles)
{
QStringList summaryFiles = getSummaryFilesFromGridFiles(initialGridFiles);
return getFilesToImport(summaryFiles);
std::vector<std::pair<QString, QString>> files;
for (QString f : initialGridFiles)
{
files.push_back(std::make_pair(getSummaryFileFromGridFile(f), f));
}
return getFilesToImport(files);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImport(const QStringList& initialSummaryFiles)
bool RifSummaryCaseRestartSelector::getFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
{
std::vector<RifSummaryCaseFileInfo> fileInfos;
if (m_showDialog)
{
bool enableApplyToAllField = initialSummaryFiles.size() > 1;
fileInfos = getFilesToImportByAskingUser(initialSummaryFiles, enableApplyToAllField);
bool enableApplyToAllField = initialFiles.size() > 1;
return getFilesToImportByAskingUser(initialFiles, enableApplyToAllField);
}
else
{
fileInfos = getFilesToImportUsingPrefs(initialSummaryFiles);
return getFilesToImportUsingPrefs(initialFiles);
}
return fileInfos;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const QStringList& initialSummaryFiles,
bool RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
bool enableApplyToAllField)
{
std::vector<RifSummaryCaseFileInfo> filesToImport;
RicSummaryCaseRestartDialogResult lastResult;
for (const QString& summaryFile : initialSummaryFiles)
for (const std::pair<QString, QString>& initialFile : initialFiles)
{
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(summaryFile,
RicSummaryCaseRestartDialogResult result = RicSummaryCaseRestartDialog::openDialog(initialFile,
enableApplyToAllField,
m_buildGridFileList,
m_defaultSummaryImportMode,
m_defaultGridImportMode,
&lastResult);
@ -139,9 +145,9 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
for (const QString& file : result.summaryFiles)
{
RifSummaryCaseFileInfo fi(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL);
if (!vectorContains(filesToImport, fi))
if (!vectorContains(m_summaryFileInfos, fi))
{
filesToImport.push_back(fi);
m_summaryFileInfos.push_back(fi);
}
}
lastResult = result;
@ -154,42 +160,45 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
else
{
// Cancel pressed, cancel everything
m_summaryFileInfos.clear();
m_gridFiles.clear();
return std::vector<RifSummaryCaseFileInfo>();
return false;
}
}
return std::vector<RifSummaryCaseFileInfo>(filesToImport.begin(), filesToImport.end());
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const QStringList& initialSummaryFiles)
bool RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles)
{
std::vector<RifSummaryCaseFileInfo> filesToImport;
RicSummaryCaseRestartDialogResult lastResult;
m_gridFiles.clear();
for (const QString& summaryFile : initialSummaryFiles)
for (const std::pair<QString, QString>& initialFile : initialFiles)
{
QString file = RiaFilePathTools::toInternalSeparator(summaryFile);
QString initialSummaryFile = RiaFilePathTools::toInternalSeparator(initialFile.first);
QString initialGridFile = RiaFilePathTools::toInternalSeparator(initialFile.second);
bool handleGridFile = !initialGridFile.isEmpty();
if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL)
{
filesToImport.push_back(RifSummaryCaseFileInfo(file, true));
filesToImport.push_back(RifSummaryCaseFileInfo(initialSummaryFile, true));
}
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::NOT_IMPORT)
{
filesToImport.push_back(RifSummaryCaseFileInfo(file, false));
filesToImport.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
}
else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
{
filesToImport.push_back(RifSummaryCaseFileInfo(file, false));
filesToImport.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
RifReaderEclipseSummary reader;
bool hasWarnings = false;
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(file, &hasWarnings);
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
for (const auto& rfi : restartFileInfos)
{
RifSummaryCaseFileInfo fi(rfi.fileName, false);
@ -200,15 +209,15 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
}
}
if (m_buildGridFileList)
if (handleGridFile)
{
m_gridFiles.push_back(RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(file));
m_gridFiles.push_back(initialGridFile);
if (m_defaultGridImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
{
RifReaderEclipseSummary reader;
bool hasWarnings = false;
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(file, &hasWarnings);
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
for (const auto& rfi : restartFileInfos)
{
RifSummaryCaseFileInfo fi(RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName), false);
@ -225,7 +234,7 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
}
}
}
return filesToImport;
return true;
}
//--------------------------------------------------------------------------------------------------
@ -238,18 +247,28 @@ QStringList RifSummaryCaseRestartSelector::getSummaryFilesFromGridFiles(const QS
// Find summary header file names from eclipse case file names
for (const auto& gridFile : gridFiles)
{
if (!gridFile.isEmpty())
{
QString summaryHeaderFile;
bool formatted;
RifEclipseSummaryTools::findSummaryHeaderFile(gridFile, &summaryHeaderFile, &formatted);
if (!summaryHeaderFile.isEmpty())
{
summaryFiles.push_back(summaryHeaderFile);
}
}
summaryFiles.push_back(getSummaryFileFromGridFile(gridFile));
}
return summaryFiles;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RifSummaryCaseRestartSelector::getSummaryFileFromGridFile(const QString& gridFile)
{
// Find summary header file names from eclipse case file names
if (!gridFile.isEmpty())
{
QString summaryHeaderFile;
bool formatted;
RifEclipseSummaryTools::findSummaryHeaderFile(gridFile, &summaryHeaderFile, &formatted);
if (!summaryHeaderFile.isEmpty())
{
return summaryHeaderFile;
}
}
return "";
}

View File

@ -41,27 +41,28 @@ public:
RifSummaryCaseRestartSelector();
~RifSummaryCaseRestartSelector();
std::vector<RifSummaryCaseFileInfo> getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles);
std::vector<RifSummaryCaseFileInfo> getFilesToImportFromGridFiles(const QStringList& initialGridFiles);
bool getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles);
bool getFilesToImportFromGridFiles(const QStringList& initialGridFiles);
void showDialog(bool show) { m_showDialog = show; }
void buildGridCaseFileList(bool build) { m_buildGridFileList = build; }
QStringList gridCaseFiles() const { return m_gridFiles; }
void showDialog(bool show) { m_showDialog = show; }
std::vector<RifSummaryCaseFileInfo> summaryFileInfos() const { return m_summaryFileInfos; }
QStringList gridCaseFiles() const { return m_gridFiles; }
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles);
static QStringList getSummaryFilesFromGridFiles(const QStringList& gridFiles);
static QString getSummaryFileFromGridFile(const QString& gridFile);
private:
std::vector<RifSummaryCaseFileInfo> getFilesToImport(const QStringList& initialSummaryFiles);
bool getFilesToImport(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
std::vector<RifSummaryCaseFileInfo> getFilesToImportByAskingUser(const QStringList& initialSummaryFiles,
bool enableApplyToAllField);
std::vector<RifSummaryCaseFileInfo> getFilesToImportUsingPrefs(const QStringList& initialSummaryFiles);
bool getFilesToImportByAskingUser(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles,
bool enableApplyToAllField);
bool getFilesToImportUsingPrefs(const std::vector<std::pair<QString /*sum*/, QString /*grid*/>>& initialFiles);
bool m_showDialog;
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
bool m_buildGridFileList;
std::vector<RifSummaryCaseFileInfo> m_summaryFileInfos;
QStringList m_gridFiles;
};