mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 06:38:13 -05:00
Use lambda functions and simplify createSummaryCasesFromFiles
This commit is contained in:
1 parent
f708ac96f2
commit
3c5221236a
8 files changed
+48
-46
No files matched your search
@@ -36,12 +36,12 @@ namespace RiaEnsembleImportTools
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::pair<bool, std::vector<RimSummaryCase*>> createSummaryCasesFromFiles( const QStringList& fileNames, CreateConfig createConfig )
|
||||
std::vector<RimSummaryCase*> createSummaryCasesFromFiles( const QStringList& fileNames, CreateConfig createConfig )
|
||||
{
|
||||
RimSummaryCaseMainCollection* sumCaseColl = RiaSummaryTools::summaryCaseMainCollection();
|
||||
if ( !sumCaseColl ) return {};
|
||||
|
||||
std::vector<RimSummaryCase*> newCases;
|
||||
if ( !sumCaseColl ) return std::make_pair( false, newCases );
|
||||
|
||||
std::vector<RifSummaryCaseFileResultInfo> importFileInfos;
|
||||
if ( createConfig.fileType == RiaDefines::FileType::SMSPEC )
|
||||
@@ -79,7 +79,7 @@ std::pair<bool, std::vector<RimSummaryCase*>> createSummaryCasesFromFiles( const
|
||||
newCases.insert( newCases.end(), sumCases.begin(), sumCases.end() );
|
||||
}
|
||||
|
||||
return std::make_pair( true, newCases );
|
||||
return newCases;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -89,24 +89,30 @@ std::pair<QString, QString> findPathPattern( const QStringList& filePaths, const
|
||||
{
|
||||
if ( filePaths.isEmpty() ) return {};
|
||||
|
||||
std::vector<std::vector<int>> tableOfNumbers;
|
||||
|
||||
QRegularExpression numberRegex( "\\d+" );
|
||||
|
||||
for ( const auto& f : filePaths )
|
||||
auto getTableOfNumbers = []( const QStringList& filePaths, const QRegularExpression& expression ) -> std::vector<std::vector<int>>
|
||||
{
|
||||
std::vector<int> valuesInString;
|
||||
auto matchIterator = numberRegex.globalMatch( f );
|
||||
while ( matchIterator.hasNext() )
|
||||
std::vector<std::vector<int>> tableOfNumbers;
|
||||
|
||||
for ( const auto& f : filePaths )
|
||||
{
|
||||
auto match = matchIterator.next();
|
||||
QString number = match.captured( 0 );
|
||||
std::vector<int> valuesInString;
|
||||
auto matchIterator = expression.globalMatch( f );
|
||||
while ( matchIterator.hasNext() )
|
||||
{
|
||||
auto match = matchIterator.next();
|
||||
QString number = match.captured( 0 );
|
||||
|
||||
valuesInString.push_back( number.toInt() );
|
||||
valuesInString.push_back( number.toInt() );
|
||||
}
|
||||
tableOfNumbers.push_back( valuesInString );
|
||||
}
|
||||
tableOfNumbers.push_back( valuesInString );
|
||||
}
|
||||
|
||||
return tableOfNumbers;
|
||||
};
|
||||
|
||||
auto tableOfNumbers = getTableOfNumbers( filePaths, numberRegex );
|
||||
if ( tableOfNumbers.empty() ) return {};
|
||||
|
||||
const auto valuesFirstRow = tableOfNumbers[0];
|
||||
@@ -239,33 +245,30 @@ QStringList createPathsBySearchingFileSystem( const QString& pathPattern, const
|
||||
{
|
||||
basePath = basePath.left( realizationPos );
|
||||
}
|
||||
|
||||
QStringList matchingFiles;
|
||||
|
||||
// Replace placeholder string with a regex pattern to capture numbers
|
||||
QString regexPattern = pathPattern;
|
||||
regexPattern.replace( placeholderString, "(\\d+)" );
|
||||
|
||||
QRegularExpression regex( regexPattern );
|
||||
|
||||
// Use QDirIterator to traverse the directory recursively
|
||||
QDirIterator it( basePath, QDir::Files, QDirIterator::Subdirectories );
|
||||
while ( it.hasNext() )
|
||||
auto getMatchingFiles = []( const QString& basePath, const QString& regexPattern ) -> QStringList
|
||||
{
|
||||
QString filePath = it.next();
|
||||
QStringList filePaths;
|
||||
QRegularExpression regex( regexPattern );
|
||||
|
||||
QRegularExpressionMatch match = regex.match( filePath );
|
||||
if ( match.hasMatch() )
|
||||
// Use QDirIterator to traverse the directory recursively
|
||||
QDirIterator it( basePath, QDir::Files, QDirIterator::Subdirectories );
|
||||
while ( it.hasNext() )
|
||||
{
|
||||
QString index1 = match.captured( 1 );
|
||||
QString index2 = match.captured( 2 );
|
||||
|
||||
if ( index1 == index2 )
|
||||
QString filePath = it.next();
|
||||
if ( regex.match( filePath ).hasMatch() )
|
||||
{
|
||||
matchingFiles << filePath;
|
||||
filePaths << filePath;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return filePaths;
|
||||
};
|
||||
|
||||
auto matchingFiles = getMatchingFiles( basePath, regexPattern );
|
||||
|
||||
// Sort files by realization number
|
||||
std::sort( matchingFiles.begin(),
|
||||
|
||||
@@ -32,7 +32,7 @@ struct CreateConfig
|
||||
bool ensembleOrGroup;
|
||||
bool allowDialogs;
|
||||
};
|
||||
std::pair<bool, std::vector<RimSummaryCase*>> createSummaryCasesFromFiles( const QStringList& fileNames, CreateConfig createConfig );
|
||||
std::vector<RimSummaryCase*> createSummaryCasesFromFiles( const QStringList& fileNames, CreateConfig createConfig );
|
||||
|
||||
std::pair<QString, QString> findPathPattern( const QStringList& filePaths, const QString& placeholderString );
|
||||
QStringList createPathsFromPattern( const QString& basePath, const QString& numberRange, const QString& placeholderString );
|
||||
|
||||
@@ -125,9 +125,8 @@ RimSummaryEnsemble* RicImportEnsembleFeature::importSingleEnsemble( const QStrin
|
||||
if ( ensembleName.isEmpty() ) return nullptr;
|
||||
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = fileType, .ensembleOrGroup = true, .allowDialogs = true };
|
||||
auto [isOk, cases] = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
|
||||
if ( !isOk || cases.empty() ) return nullptr;
|
||||
auto cases = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( cases.empty() ) return nullptr;
|
||||
|
||||
RimSummaryEnsemble* ensemble = RicImportEnsembleFeature::groupSummaryCases( cases, ensembleName, groupingMode, true );
|
||||
|
||||
|
||||
@@ -76,8 +76,8 @@ void RicImportSummaryCasesFeature::onActionTriggered( bool isChecked )
|
||||
if ( fileNames.isEmpty() ) return;
|
||||
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = fileType, .ensembleOrGroup = false, .allowDialogs = true };
|
||||
auto [isOk, cases] = createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( !isOk ) return;
|
||||
auto cases = createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( !cases.empty() ) return;
|
||||
|
||||
addSummaryCases( cases );
|
||||
if ( !cases.empty() )
|
||||
@@ -125,8 +125,8 @@ std::pair<bool, std::vector<RimSummaryCase*>> RicImportSummaryCasesFeature::crea
|
||||
RiaGuiApplication* app = RiaGuiApplication::instance();
|
||||
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = RiaDefines::FileType::SMSPEC, .ensembleOrGroup = false, .allowDialogs = true };
|
||||
auto [isOk, cases] = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( isOk )
|
||||
auto cases = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( !cases.empty() )
|
||||
{
|
||||
addSummaryCases( cases );
|
||||
if ( !cases.empty() && doCreateDefaultPlot )
|
||||
|
||||
@@ -49,7 +49,7 @@ void RicImportSummaryGroupFeature::onActionTriggered( bool isChecked )
|
||||
RiaDefines::FileType fileType = RicRecursiveFileSearchDialog::mapSummaryFileType( result.fileType );
|
||||
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = fileType, .ensembleOrGroup = true, .allowDialogs = true };
|
||||
auto [isOk, cases] = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
auto cases = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
|
||||
RicImportSummaryCasesFeature::addSummaryCases( cases );
|
||||
RicImportEnsembleFeature::groupSummaryCases( cases, "", RiaDefines::EnsembleGroupingMode::FMU_FOLDER_STRUCTURE, false );
|
||||
|
||||
+2
-2
@@ -63,8 +63,8 @@ void RicReplaceSummaryEnsembleFeature::onActionTriggered( bool isChecked )
|
||||
if ( fileType != RiaDefines::FileType::SMSPEC ) return;
|
||||
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = fileType, .ensembleOrGroup = false, .allowDialogs = false };
|
||||
auto [isOk, newCases] = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( !isOk || newCases.empty() )
|
||||
auto newCases = RiaEnsembleImportTools::createSummaryCasesFromFiles( fileNames, createConfig );
|
||||
if ( newCases.empty() )
|
||||
{
|
||||
RiaLogging::warning( "No new cases are created." );
|
||||
return;
|
||||
|
||||
@@ -288,8 +288,8 @@ void RicSummaryPlotFeatureImpl::createSummaryPlotsFromArgumentLine( const QStrin
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = RiaDefines::FileType::SMSPEC,
|
||||
.ensembleOrGroup = isEnsembleMode,
|
||||
.allowDialogs = true };
|
||||
auto [isOk, summaryCasesToUse] = RiaEnsembleImportTools::createSummaryCasesFromFiles( summaryFileNames, createConfig );
|
||||
if ( !isOk || summaryCasesToUse.empty() )
|
||||
auto summaryCasesToUse = RiaEnsembleImportTools::createSummaryCasesFromFiles( summaryFileNames, createConfig );
|
||||
if ( summaryCasesToUse.empty() )
|
||||
{
|
||||
RiaLogging::error( "Needs at least one summary case to create a plot." );
|
||||
return;
|
||||
|
||||
@@ -74,8 +74,8 @@ caf::PdmObjectHandle* RimProject_importSummaryCase::execute()
|
||||
QStringList summaryFileNames{ absolutePath };
|
||||
|
||||
RiaEnsembleImportTools::CreateConfig createConfig{ .fileType = RiaDefines::FileType::SMSPEC, .ensembleOrGroup = false, .allowDialogs = false };
|
||||
auto [isOk, newCases] = RiaEnsembleImportTools::createSummaryCasesFromFiles( summaryFileNames, createConfig );
|
||||
if ( isOk )
|
||||
auto newCases = RiaEnsembleImportTools::createSummaryCasesFromFiles( summaryFileNames, createConfig );
|
||||
if ( !newCases.empty() )
|
||||
{
|
||||
RicImportSummaryCasesFeature::addSummaryCases( newCases );
|
||||
|
||||
|
||||
Reference in new issue
Block a user