#14780 Create a best effort ensemble instead of nothing for None grouping

RiaEnsembleNameTools::groupFilesByEnsembleName had no branch for
EnsembleGroupingMode::NONE, so it silently returned an empty map and
no ensemble was created for this grouping mode. Add handling that
groups all input files into a single ensemble.

Also surface warning dialogs instead of silently doing nothing when
no ensemble/grid ensemble could be created from the selected files,
in RicImportGridAndSummaryEnsembleFeature and
RicCreateGridCaseEnsemblesFromFilesFeature.
This commit is contained in:
Magne Sjaastad committed 2026-09-24 08:16:29 +02:00
1 parent 8f9b828ac4
commit e269893c04
3 files changed
+43 -3

No files matched your search

@@ -394,6 +394,15 @@ std::map<QString, QStringList> RiaEnsembleNameTools::groupFilesByEnsembleName( c
ensemblePaths[QString::fromStdString( ensembleName )] = groupPaths;
}
}
else if ( groupingMode == RiaDefines::EnsembleGroupingMode::NONE )
{
// No grouping requested: put all files into a single ensemble.
if ( !fileNames.isEmpty() )
{
QString ensembleName = findSuitableEnsembleName( fileNames, groupingMode );
ensemblePaths[ensembleName] = fileNames;
}
}
return ensemblePaths;
}
@@ -47,6 +47,9 @@
#include <QAction>
#include <QDir>
#include <QFileInfo>
#include <QMessageBox>
#include <algorithm>
CAF_CMD_SOURCE_INIT( RicCreateGridCaseEnsemblesFromFilesFeature, "RicCreateGridCaseEnsemblesFromFilesFeature" );
@@ -73,7 +76,18 @@ void RicCreateGridCaseEnsemblesFromFilesFeature::onActionTriggered( bool isCheck
}
}
if ( gridEnsembles.empty() ) return;
if ( fileNames.isEmpty() ) return;
bool anyCasesCreated = std::any_of( gridEnsembles.begin(),
gridEnsembles.end(),
[]( RimEclipseCaseEnsemble* ensemble ) { return ensemble && !ensemble->cases().empty(); } );
if ( !anyCasesCreated )
{
QMessageBox::warning( RiaGuiApplication::widgetToUseAsParent(),
"Grid Ensemble Import Failed",
"No grid ensemble could be created from the selected files." );
return;
}
auto firstEnsemble = gridEnsembles.front();
if ( firstEnsemble->cases().empty() ) return;
@@ -34,11 +34,13 @@
#include "RimSummaryEnsemble.h"
#include "RimViewNameConfig.h"
#include "RiuMainWindow.h"
#include "RiuPlotMainWindow.h"
#include "RiuPlotMainWindowTools.h"
#include <QAction>
#include <QIcon>
#include <QMessageBox>
#include <QPointer>
#include <QSet>
#include <QSettings>
@@ -113,10 +115,21 @@ static void doImport( const RicImportGridAndSummaryEnsembleDialogResult& result,
strippedPaths.removeDuplicates();
if ( strippedPaths.isEmpty() ) return;
if ( strippedPaths.isEmpty() )
{
QMessageBox::warning( RiuMainWindow::instance(), "No Files Found", "No grid or summary files were found to import." );
return;
}
auto fileSets = RimEnsembleFileSetTools::createEnsembleFileSets( strippedPaths, result.groupingMode );
if ( fileSets.empty() ) return;
if ( fileSets.empty() )
{
QMessageBox::warning( RiuMainWindow::instance(),
"Ensemble Import Failed",
"No ensemble could be created from the selected files. The selected folder structure did not match the "
"selected ensemble grouping mode. Try selecting a different grouping mode." );
return;
}
bool gridEnsemblesCreated = false;
if ( result.createGridEnsemble && !result.gridFiles.isEmpty() )
@@ -133,6 +146,10 @@ static void doImport( const RicImportGridAndSummaryEnsembleDialogResult& result,
if ( view ) view->nameConfig()->setAddCaseName( true );
}
}
else
{
QMessageBox::warning( RiuMainWindow::instance(), "Grid Ensemble Import Failed", "No grid ensemble could be created." );
}
}
if ( result.createSummaryEnsemble && !result.summaryFiles.isEmpty() )