diff --git a/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp b/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp index 8ec09c909e..bbb7fc70f9 100644 --- a/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp +++ b/ApplicationCode/Application/Tools/RiaImportEclipseCaseTools.cpp @@ -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 summaryFileInfos = selector.getFilesToImportFromGridFiles(fileNames); + std::vector summaryFileInfos; + if (selector.getFilesToImportFromGridFiles(fileNames)) + { + summaryFileInfos = selector.summaryFileInfos(); + } // Import eclipse case files for (const QString& gridCaseFile : selector.gridCaseFiles()) diff --git a/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp b/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp index 64c32bafef..df4cc293df 100644 --- a/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp +++ b/ApplicationCode/Commands/RicImportSummaryCasesFeature.cpp @@ -116,7 +116,11 @@ bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList if (!sumCaseColl) return false; RifSummaryCaseRestartSelector fileSelector; - std::vector importFileInfos = fileSelector.getFilesToImportFromSummaryFiles(fileNames); + std::vector importFileInfos; + if (fileSelector.getFilesToImportFromSummaryFiles(fileNames)) + { + importFileInfos = fileSelector.summaryFileInfos(); + } std::vector sumCases = sumCaseColl->createSummaryCasesFromFileInfos(importFileInfos); diff --git a/ApplicationCode/Commands/RicSummaryCaseRestartDialog.cpp b/ApplicationCode/Commands/RicSummaryCaseRestartDialog.cpp index 1b6a0e3b90..7054f82eaf 100644 --- a/ApplicationCode/Commands/RicSummaryCaseRestartDialog.cpp +++ b/ApplicationCode/Commands/RicSummaryCaseRestartDialog.cpp @@ -193,17 +193,30 @@ RicSummaryCaseRestartDialog::~RicSummaryCaseRestartDialog() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const QString& summaryHeaderFile, +RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const std::pair& 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 originFileInfos = reader.getRestartFiles(summaryHeaderFile, &hasWarnings); + std::vector 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 originSummaryFileInfos; std::vector 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); } } } diff --git a/ApplicationCode/Commands/RicSummaryCaseRestartDialog.h b/ApplicationCode/Commands/RicSummaryCaseRestartDialog.h index 356aeca999..022ae4f6d7 100644 --- a/ApplicationCode/Commands/RicSummaryCaseRestartDialog.h +++ b/ApplicationCode/Commands/RicSummaryCaseRestartDialog.h @@ -52,9 +52,8 @@ public: RicSummaryCaseRestartDialog(QWidget* parent); ~RicSummaryCaseRestartDialog(); - static RicSummaryCaseRestartDialogResult openDialog(const QString& summaryHeaderFile, + static RicSummaryCaseRestartDialogResult openDialog(const std::pair& initialFiles, bool showApplyToAllWidget, - bool buildGridCaseFileList, ImportOptions defaultSummaryImportOption, ImportOptions defaultGridImportOption, RicSummaryCaseRestartDialogResult *lastResult = nullptr, diff --git a/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.cpp b/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.cpp index 94909f16ec..9eb4dc6542 100644 --- a/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.cpp +++ b/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.cpp @@ -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 RifSummaryCaseRestartSelector::getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles) +bool RifSummaryCaseRestartSelector::getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles) { - return getFilesToImport(initialSummaryFiles); + std::vector> files; + for (QString f : initialSummaryFiles) + { + files.push_back(std::make_pair(f, "")); + } + return getFilesToImport(files); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::vector RifSummaryCaseRestartSelector::getFilesToImportFromGridFiles(const QStringList& initialGridFiles) +bool RifSummaryCaseRestartSelector::getFilesToImportFromGridFiles(const QStringList& initialGridFiles) { - QStringList summaryFiles = getSummaryFilesFromGridFiles(initialGridFiles); - return getFilesToImport(summaryFiles); + std::vector> files; + for (QString f : initialGridFiles) + { + files.push_back(std::make_pair(getSummaryFileFromGridFile(f), f)); + } + return getFilesToImport(files); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::vector RifSummaryCaseRestartSelector::getFilesToImport(const QStringList& initialSummaryFiles) +bool RifSummaryCaseRestartSelector::getFilesToImport(const std::vector>& initialFiles) { std::vector 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 RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const QStringList& initialSummaryFiles, +bool RifSummaryCaseRestartSelector::getFilesToImportByAskingUser(const std::vector>& initialFiles, bool enableApplyToAllField) { - std::vector filesToImport; RicSummaryCaseRestartDialogResult lastResult; - for (const QString& summaryFile : initialSummaryFiles) + for (const std::pair& 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 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 RifSummaryCaseRestartSelector::getFilesToImp else { // Cancel pressed, cancel everything + m_summaryFileInfos.clear(); m_gridFiles.clear(); - return std::vector(); + return false; } } - return std::vector(filesToImport.begin(), filesToImport.end()); + return true; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::vector RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const QStringList& initialSummaryFiles) +bool RifSummaryCaseRestartSelector::getFilesToImportUsingPrefs(const std::vector>& initialFiles) { std::vector filesToImport; RicSummaryCaseRestartDialogResult lastResult; m_gridFiles.clear(); - for (const QString& summaryFile : initialSummaryFiles) + for (const std::pair& 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 restartFileInfos = reader.getRestartFiles(file, &hasWarnings); + std::vector restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings); for (const auto& rfi : restartFileInfos) { RifSummaryCaseFileInfo fi(rfi.fileName, false); @@ -200,15 +209,15 @@ std::vector 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 restartFileInfos = reader.getRestartFiles(file, &hasWarnings); + std::vector restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings); for (const auto& rfi : restartFileInfos) { RifSummaryCaseFileInfo fi(RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(rfi.fileName), false); @@ -225,7 +234,7 @@ std::vector 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 ""; +} diff --git a/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.h b/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.h index f3f73a1274..837a42406d 100644 --- a/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.h +++ b/ApplicationCode/FileInterface/RifSummaryCaseRestartSelector.h @@ -41,27 +41,28 @@ public: RifSummaryCaseRestartSelector(); ~RifSummaryCaseRestartSelector(); - std::vector getFilesToImportFromSummaryFiles(const QStringList& initialSummaryFiles); - std::vector 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 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 getFilesToImport(const QStringList& initialSummaryFiles); + bool getFilesToImport(const std::vector>& initialFiles); - std::vector getFilesToImportByAskingUser(const QStringList& initialSummaryFiles, - bool enableApplyToAllField); - std::vector getFilesToImportUsingPrefs(const QStringList& initialSummaryFiles); + bool getFilesToImportByAskingUser(const std::vector>& initialFiles, + bool enableApplyToAllField); + bool getFilesToImportUsingPrefs(const std::vector>& initialFiles); bool m_showDialog; RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode; RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode; - bool m_buildGridFileList; + std::vector m_summaryFileInfos; QStringList m_gridFiles; };