mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6043 Elastic Properties Reader: auto-detect csv cell separator.
This commit is contained in:
parent
eaea8b6134
commit
4f5bf4f606
@ -23,6 +23,7 @@
|
||||
#include "RimElasticProperties.h"
|
||||
#include "RimFractureModel.h"
|
||||
|
||||
#include "RifCsvUserDataParser.h"
|
||||
#include "RifElasticPropertiesReader.h"
|
||||
#include "RifFileParseTools.h"
|
||||
|
||||
@ -37,6 +38,9 @@
|
||||
void RicElasticPropertiesImportTools::importElasticPropertiesFromFile( const QString& filePath,
|
||||
RimFractureModel* fractureModel )
|
||||
{
|
||||
RifCsvUserDataFileParser csvParser( filePath );
|
||||
QString separator = csvParser.tryDetermineCellSeparator();
|
||||
|
||||
typedef std::tuple<QString, QString, QString> FaciesKey;
|
||||
|
||||
// Read the facies properties from file
|
||||
@ -45,7 +49,7 @@ void RicElasticPropertiesImportTools::importElasticPropertiesFromFile( const QSt
|
||||
{
|
||||
QStringList filePaths;
|
||||
filePaths << filePath;
|
||||
RifElasticPropertiesReader::readElasticProperties( rifElasticProperties, filePaths );
|
||||
RifElasticPropertiesReader::readElasticProperties( rifElasticProperties, filePaths, separator );
|
||||
}
|
||||
catch ( FileParseException& exception )
|
||||
{
|
||||
|
@ -27,13 +27,14 @@
|
||||
///
|
||||
//==================================================================================================
|
||||
void RifElasticPropertiesReader::readElasticProperties( std::vector<RifElasticProperties>& elasticProperties,
|
||||
const QStringList& filePaths )
|
||||
const QStringList& filePaths,
|
||||
const QString& separator )
|
||||
{
|
||||
for ( const QString& filePath : filePaths )
|
||||
{
|
||||
try
|
||||
{
|
||||
readElasticProperties( elasticProperties, filePath );
|
||||
readElasticProperties( elasticProperties, filePath, separator );
|
||||
}
|
||||
catch ( FileParseException& )
|
||||
{
|
||||
@ -48,7 +49,8 @@ void RifElasticPropertiesReader::readElasticProperties( std::vector<RifElasticPr
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RifElasticPropertiesReader::readElasticProperties( std::vector<RifElasticProperties>& elasticProperties,
|
||||
const QString& filePath )
|
||||
const QString& filePath,
|
||||
const QString& separator )
|
||||
{
|
||||
QFile file( filePath );
|
||||
if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) )
|
||||
@ -63,7 +65,7 @@ void RifElasticPropertiesReader::readElasticProperties( std::vector<RifElasticPr
|
||||
QString line = in.readLine();
|
||||
if ( !isEmptyLine( line ) && !isCommentLine( line ) )
|
||||
{
|
||||
RifElasticProperties faciesProp = parseElasticProperties( line, lineNumber, filePath );
|
||||
RifElasticProperties faciesProp = parseElasticProperties( line, lineNumber, filePath, separator );
|
||||
elasticProperties.push_back( faciesProp );
|
||||
}
|
||||
|
||||
@ -74,10 +76,12 @@ void RifElasticPropertiesReader::readElasticProperties( std::vector<RifElasticPr
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifElasticProperties
|
||||
RifElasticPropertiesReader::parseElasticProperties( const QString& line, int lineNumber, const QString& filePath )
|
||||
RifElasticProperties RifElasticPropertiesReader::parseElasticProperties( const QString& line,
|
||||
int lineNumber,
|
||||
const QString& filePath,
|
||||
const QString& separator )
|
||||
{
|
||||
QStringList tokens = tokenize( line, "," );
|
||||
QStringList tokens = tokenize( line, separator );
|
||||
|
||||
// Plus one to allow trailing separator
|
||||
const int expectedTokens = 13;
|
||||
|
@ -45,11 +45,16 @@ struct RifElasticProperties
|
||||
class RifElasticPropertiesReader
|
||||
{
|
||||
public:
|
||||
static void readElasticProperties( std::vector<RifElasticProperties>& elasticProperties, const QStringList& filePaths );
|
||||
static void readElasticProperties( std::vector<RifElasticProperties>& elasticProperties,
|
||||
const QStringList& filePaths,
|
||||
const QString& separator = "," );
|
||||
|
||||
private:
|
||||
static void readElasticProperties( std::vector<RifElasticProperties>& elasticProperties, const QString& filePath );
|
||||
static RifElasticProperties parseElasticProperties( const QString& line, int lineNumber, const QString& filePath );
|
||||
static void readElasticProperties( std::vector<RifElasticProperties>& elasticProperties,
|
||||
const QString& filePath,
|
||||
const QString& separator );
|
||||
static RifElasticProperties
|
||||
parseElasticProperties( const QString& line, int lineNumber, const QString& filePath, const QString& separator );
|
||||
static QStringList tokenize( const QString& line, const QString& separator );
|
||||
static void verifyNonEmptyTokens( const QStringList& tokens,
|
||||
const QStringList& nameOfNonEmptyTokens,
|
||||
|
@ -100,6 +100,29 @@ TEST( RifElasticPropertiesReaderTest, ReadCorrectInputFileWithTrailingSeparator
|
||||
ASSERT_EQ( 2u, elasticProperties.size() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST( RifElasticPropertiesReaderTest, ReadCorrectInputFileWithCustomSeparator )
|
||||
{
|
||||
QTemporaryFile file;
|
||||
EXPECT_TRUE( file.open() );
|
||||
|
||||
{
|
||||
QTextStream out( &file );
|
||||
out << "Norne;Not;Sand;0.00;25;0.25;2000;0.2;0.3;0.4;0.5;0.6;0.4;\n"
|
||||
<< "Norne;Not;Sand;0.10;19;0.27;2099;0.3;0.4;0.5;0.2;0.5;0.55;\n";
|
||||
}
|
||||
|
||||
QStringList filePaths;
|
||||
filePaths.append( file.fileName() );
|
||||
|
||||
std::vector<RifElasticProperties> elasticProperties;
|
||||
RifElasticPropertiesReader::readElasticProperties( elasticProperties, filePaths, ";" );
|
||||
|
||||
ASSERT_EQ( 2u, elasticProperties.size() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Helper to check exception messages when reading invalid files
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user