#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 // Get list of files to import
RifSummaryCaseRestartSelector selector; RifSummaryCaseRestartSelector selector;
if(noDialog) selector.showDialog(false); if(noDialog) selector.showDialog(false);
selector.buildGridCaseFileList(true); std::vector<RifSummaryCaseFileInfo> summaryFileInfos;
std::vector<RifSummaryCaseFileInfo> summaryFileInfos = selector.getFilesToImportFromGridFiles(fileNames); if (selector.getFilesToImportFromGridFiles(fileNames))
{
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

@ -116,7 +116,11 @@ bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList
if (!sumCaseColl) return false; if (!sumCaseColl) return false;
RifSummaryCaseRestartSelector fileSelector; 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); 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 showApplyToAllWidget,
bool buildGridCaseFileList,
ImportOptions defaultSummaryImportOption, ImportOptions defaultSummaryImportOption,
ImportOptions defaultGridImportOption, ImportOptions defaultGridImportOption,
RicSummaryCaseRestartDialogResult *lastResult, RicSummaryCaseRestartDialogResult *lastResult,
QWidget *parent) QWidget *parent)
{ {
RicSummaryCaseRestartDialog dialog(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()) if (!currentFileInfo.valid())
{ {
return RicSummaryCaseRestartDialogResult(); return RicSummaryCaseRestartDialogResult();
@ -211,13 +224,12 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
RifReaderEclipseSummary reader; RifReaderEclipseSummary reader;
bool hasWarnings = false; 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 no restart files are found and no warnings, do not show dialog
if (originFileInfos.empty() &&!hasWarnings) if (originFileInfos.empty() &&!hasWarnings)
{ {
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(summaryHeaderFile); return RicSummaryCaseRestartDialogResult(true, NOT_IMPORT, NOT_IMPORT, QStringList({ initialSummaryFile }), QStringList({ initialGridFile }), false);
return RicSummaryCaseRestartDialogResult(true, NOT_IMPORT, NOT_IMPORT, QStringList({ summaryHeaderFile }), QStringList({ gridCaseFile }), false);
} }
RicSummaryCaseRestartDialogResult dialogResult; RicSummaryCaseRestartDialogResult dialogResult;
@ -238,12 +250,11 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
std::vector<RifRestartFileInfo> originSummaryFileInfos; std::vector<RifRestartFileInfo> originSummaryFileInfos;
std::vector<RifRestartFileInfo> originGridFileInfos; std::vector<RifRestartFileInfo> originGridFileInfos;
// Build lists of files // Grid file
if (buildGridCaseFileList) if (handleGridFile)
{ {
dialog.m_currentFilesGroup->setTitle("Current Grid and Summary Files"); dialog.m_currentFilesGroup->setTitle("Current Grid and Summary Files");
QString gridFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(currentFileInfo.fileName); currentFileInfos.push_back(RifRestartFileInfo(initialGridFile, currentFileInfo.startDate, currentFileInfo.endDate));
currentFileInfos.push_back(RifRestartFileInfo(gridFile, currentFileInfo.startDate, currentFileInfo.endDate));
for (const auto& ofi : originFileInfos) for (const auto& ofi : originFileInfos)
{ {
@ -269,7 +280,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
case ImportOptions::NOT_IMPORT: dialog.m_summaryNotReadBtn->setChecked(true); break; case ImportOptions::NOT_IMPORT: dialog.m_summaryNotReadBtn->setChecked(true); break;
} }
if (buildGridCaseFileList) if (handleGridFile)
{ {
switch (defaultGridImportOption) switch (defaultGridImportOption)
{ {
@ -312,7 +323,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
return RicSummaryCaseRestartDialogResult(false, NOT_IMPORT, NOT_IMPORT, QStringList(), QStringList(), false); 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) if (dialogResult.summaryImportOption == SEPARATE_CASES)
{ {
for (const auto& ofi : originFileInfos) 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(initialGridFile);
dialogResult.gridFiles.push_back(gridCaseFile);
if (dialogResult.gridImportOption == SEPARATE_CASES) if (dialogResult.gridImportOption == SEPARATE_CASES)
{ {
for (const auto& ofi : originFileInfos) for (const auto& ofi : originFileInfos)
{ {
QString gridFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(ofi.fileName); 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(QWidget* parent);
~RicSummaryCaseRestartDialog(); ~RicSummaryCaseRestartDialog();
static RicSummaryCaseRestartDialogResult openDialog(const QString& summaryHeaderFile, static RicSummaryCaseRestartDialogResult openDialog(const std::pair<QString /*sum*/, QString /*grid*/>& initialFiles,
bool showApplyToAllWidget, bool showApplyToAllWidget,
bool buildGridCaseFileList,
ImportOptions defaultSummaryImportOption, ImportOptions defaultSummaryImportOption,
ImportOptions defaultGridImportOption, ImportOptions defaultGridImportOption,
RicSummaryCaseRestartDialogResult *lastResult = nullptr, RicSummaryCaseRestartDialogResult *lastResult = nullptr,

View File

@ -70,7 +70,7 @@ RifSummaryCaseRestartSelector::RifSummaryCaseRestartSelector()
m_defaultSummaryImportMode = mapReadOption(prefs->summaryImportMode()); m_defaultSummaryImportMode = mapReadOption(prefs->summaryImportMode());
m_defaultGridImportMode = mapReadOption(prefs->gridImportMode()); m_defaultGridImportMode = mapReadOption(prefs->gridImportMode());
m_buildGridFileList = false; //m_buildGridFileList = false;
m_gridFiles.clear(); 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); std::vector<std::pair<QString, QString>> files;
return getFilesToImport(summaryFiles); 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; std::vector<RifSummaryCaseFileInfo> fileInfos;
if (m_showDialog) if (m_showDialog)
{ {
bool enableApplyToAllField = initialSummaryFiles.size() > 1; bool enableApplyToAllField = initialFiles.size() > 1;
fileInfos = getFilesToImportByAskingUser(initialSummaryFiles, enableApplyToAllField); return getFilesToImportByAskingUser(initialFiles, enableApplyToAllField);
} }
else 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) bool enableApplyToAllField)
{ {
std::vector<RifSummaryCaseFileInfo> filesToImport;
RicSummaryCaseRestartDialogResult lastResult; 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, enableApplyToAllField,
m_buildGridFileList,
m_defaultSummaryImportMode, m_defaultSummaryImportMode,
m_defaultGridImportMode, m_defaultGridImportMode,
&lastResult); &lastResult);
@ -139,9 +145,9 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
for (const QString& file : result.summaryFiles) for (const QString& file : result.summaryFiles)
{ {
RifSummaryCaseFileInfo fi(file, result.summaryImportOption == RicSummaryCaseRestartDialog::IMPORT_ALL); 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; lastResult = result;
@ -154,42 +160,45 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
else else
{ {
// Cancel pressed, cancel everything // Cancel pressed, cancel everything
m_summaryFileInfos.clear();
m_gridFiles.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; std::vector<RifSummaryCaseFileInfo> filesToImport;
RicSummaryCaseRestartDialogResult lastResult; RicSummaryCaseRestartDialogResult lastResult;
m_gridFiles.clear(); 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) 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) 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) else if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
{ {
filesToImport.push_back(RifSummaryCaseFileInfo(file, false)); filesToImport.push_back(RifSummaryCaseFileInfo(initialSummaryFile, false));
RifReaderEclipseSummary reader; RifReaderEclipseSummary reader;
bool hasWarnings = false; bool hasWarnings = false;
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(file, &hasWarnings); std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
for (const auto& rfi : restartFileInfos) for (const auto& rfi : restartFileInfos)
{ {
RifSummaryCaseFileInfo fi(rfi.fileName, false); 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) if (m_defaultGridImportMode == RicSummaryCaseRestartDialog::SEPARATE_CASES)
{ {
RifReaderEclipseSummary reader; RifReaderEclipseSummary reader;
bool hasWarnings = false; bool hasWarnings = false;
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(file, &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); RifSummaryCaseFileInfo fi(RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName), false);
@ -225,7 +234,7 @@ std::vector<RifSummaryCaseFileInfo> RifSummaryCaseRestartSelector::getFilesToImp
} }
} }
} }
return filesToImport; return true;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -238,6 +247,17 @@ QStringList RifSummaryCaseRestartSelector::getSummaryFilesFromGridFiles(const QS
// Find summary header file names from eclipse case file names // Find summary header file names from eclipse case file names
for (const auto& gridFile : gridFiles) for (const auto& gridFile : gridFiles)
{ {
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()) if (!gridFile.isEmpty())
{ {
QString summaryHeaderFile; QString summaryHeaderFile;
@ -247,9 +267,8 @@ QStringList RifSummaryCaseRestartSelector::getSummaryFilesFromGridFiles(const QS
if (!summaryHeaderFile.isEmpty()) if (!summaryHeaderFile.isEmpty())
{ {
summaryFiles.push_back(summaryHeaderFile); return summaryHeaderFile;
} }
} }
} return "";
return summaryFiles;
} }

View File

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