#6043 Elastic Properties Reader: auto-detect csv cell separator.

This commit is contained in:
Kristian Bendiksen
2020-09-03 13:29:36 +02:00
parent eaea8b6134
commit 4f5bf4f606
4 changed files with 52 additions and 16 deletions

View File

@@ -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;

View File

@@ -45,16 +45,21 @@ 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 QStringList tokenize( const QString& line, const QString& separator );
static void verifyNonEmptyTokens( const QStringList& tokens,
const QStringList& nameOfNonEmptyTokens,
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,
int lineNumber,
const QString& filePath );
static double parseDouble( const QString& token, const QString& propertyName, int lineNumber, const QString& filePath );