#4763 Refactor complex code

This commit is contained in:
Magne Sjaastad 2020-03-06 13:54:02 +01:00
parent 88662a00d8
commit 66cbc198c4
2 changed files with 33 additions and 113 deletions

View File

@ -35,7 +35,6 @@ RifCaseRealizationReader::RifCaseRealizationReader( const QString& fileName )
{
m_parameters = std::shared_ptr<RigCaseRealizationParameters>( new RigCaseRealizationParameters() );
m_fileName = fileName;
m_file = nullptr;
}
//--------------------------------------------------------------------------------------------------
@ -43,7 +42,6 @@ RifCaseRealizationReader::RifCaseRealizationReader( const QString& fileName )
//--------------------------------------------------------------------------------------------------
RifCaseRealizationReader::~RifCaseRealizationReader()
{
closeFile();
}
//--------------------------------------------------------------------------------------------------
@ -72,36 +70,6 @@ std::shared_ptr<RifCaseRealizationReader> RifCaseRealizationReader::createReader
return reader;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QFile* RifCaseRealizationReader::openFile()
{
if ( !m_file )
{
m_file = new QFile( m_fileName );
if ( !m_file->open( QIODevice::ReadOnly | QIODevice::Text ) )
{
closeFile();
throw FileParseException( QString( "Failed to open %1" ).arg( m_fileName ) );
}
}
return m_file;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifCaseRealizationReader::closeFile()
{
if ( m_file )
{
m_file->close();
delete m_file;
m_file = nullptr;
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -124,7 +92,6 @@ QString RifCaseRealizationReader::runSpecificationFileName()
RifCaseRealizationParametersReader::RifCaseRealizationParametersReader( const QString& fileName )
: RifCaseRealizationReader( fileName )
{
m_textStream = nullptr;
}
//--------------------------------------------------------------------------------------------------
@ -132,10 +99,6 @@ RifCaseRealizationParametersReader::RifCaseRealizationParametersReader( const QS
//--------------------------------------------------------------------------------------------------
RifCaseRealizationParametersReader::~RifCaseRealizationParametersReader()
{
if ( m_textStream )
{
delete m_textStream;
}
}
//--------------------------------------------------------------------------------------------------
@ -143,55 +106,48 @@ RifCaseRealizationParametersReader::~RifCaseRealizationParametersReader()
//--------------------------------------------------------------------------------------------------
void RifCaseRealizationParametersReader::parse()
{
int lineNo = 0;
QTextStream* dataStream = openDataStream();
QFile file( m_fileName );
if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) return;
QTextStream dataStream( &file );
int lineNo = 0;
QStringList errors;
try
while ( !dataStream.atEnd() )
{
while ( !dataStream->atEnd() )
QString line = dataStream.readLine();
lineNo++;
QStringList cols = RifFileParseTools::splitLineAndTrim( line, QRegExp( "[ \t]" ), true );
if ( cols.size() != 2 )
{
QString line = dataStream->readLine();
errors << QString( "RifEnsembleParametersReader: Invalid file format in line %1" ).arg( lineNo );
lineNo++;
QStringList cols = RifFileParseTools::splitLineAndTrim( line, QRegExp( "[ \t]" ), true );
continue;
}
if ( cols.size() != 2 )
QString& name = cols[0];
QString& strValue = cols[1];
if ( RiaStdStringTools::isNumber( strValue.toStdString(), QLocale::c().decimalPoint().toLatin1() ) )
{
bool parseOk = true;
double value = QLocale::c().toDouble( strValue, &parseOk );
if ( parseOk )
{
errors << QString( "RifEnsembleParametersReader: Invalid file format in line %1" ).arg( lineNo );
continue;
}
QString& name = cols[0];
QString& strValue = cols[1];
if ( RiaStdStringTools::isNumber( strValue.toStdString(), QLocale::c().decimalPoint().toLatin1() ) )
{
bool parseOk = true;
double value = QLocale::c().toDouble( strValue, &parseOk );
if ( parseOk )
{
m_parameters->addParameter( name, value );
}
else
{
errors << QString( "RifEnsembleParametersReader: Invalid number format in line %1" ).arg( lineNo );
}
m_parameters->addParameter( name, value );
}
else
{
m_parameters->addParameter( name, strValue );
errors << QString( "RifEnsembleParametersReader: Invalid number format in line %1" ).arg( lineNo );
}
}
closeDataStream();
}
catch ( ... )
{
closeDataStream();
throw;
else
{
m_parameters->addParameter( name, strValue );
}
}
for ( const auto& s : errors )
@ -200,30 +156,6 @@ void RifCaseRealizationParametersReader::parse()
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QTextStream* RifCaseRealizationParametersReader::openDataStream()
{
auto file = openFile();
m_textStream = new QTextStream( file );
return m_textStream;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RifCaseRealizationParametersReader::closeDataStream()
{
if ( m_textStream )
{
delete m_textStream;
m_textStream = nullptr;
}
closeFile();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -244,8 +176,10 @@ RifCaseRealizationRunspecificationReader::~RifCaseRealizationRunspecificationRea
//--------------------------------------------------------------------------------------------------
void RifCaseRealizationRunspecificationReader::parse()
{
auto file = openFile();
QXmlStreamReader xml( file );
QFile file( m_fileName );
if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) return;
QXmlStreamReader xml( &file );
QStringList errors;
@ -303,8 +237,6 @@ void RifCaseRealizationRunspecificationReader::parse()
}
}
closeFile();
for ( const auto& s : errors )
{
RiaLogging::warning( s );

View File

@ -56,14 +56,9 @@ public:
static QString runSpecificationFileName();
protected:
QFile* openFile();
void closeFile();
std::shared_ptr<RigCaseRealizationParameters> m_parameters;
private:
QString m_fileName;
QFile* m_file;
};
//==================================================================================================
@ -77,13 +72,6 @@ public:
~RifCaseRealizationParametersReader() override;
void parse() override;
private:
QTextStream* openDataStream();
void closeDataStream();
private:
QTextStream* m_textStream;
};
//==================================================================================================