#2066 Observed Data : Improve error reporting

This commit is contained in:
Magne Sjaastad
2017-11-03 08:11:27 +01:00
parent ea53018f54
commit 9b7cfdd913
12 changed files with 71 additions and 16 deletions

View File

@@ -51,14 +51,14 @@ RifColumnBasedUserData::~RifColumnBasedUserData()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RifColumnBasedUserData::parse(const QString& data)
bool RifColumnBasedUserData::parse(const QString& data, QString* errorText)
{
m_allResultAddresses.clear();
m_timeSteps.clear();
m_mapFromAddressToTimeStepIndex.clear();
m_mapFromAddressToResultIndex.clear();
m_parser = std::unique_ptr<RifColumnBasedUserDataParser>(new RifColumnBasedUserDataParser(data));
m_parser = std::unique_ptr<RifColumnBasedUserDataParser>(new RifColumnBasedUserDataParser(data, errorText));
if (!m_parser)
{
RiaLogging::error(QString("Failed to parse file"));

View File

@@ -40,7 +40,7 @@ public:
RifColumnBasedUserData();
~RifColumnBasedUserData();
bool parse(const QString& data);
bool parse(const QString& data, QString* errorText = nullptr);
virtual const std::vector<time_t>& timeSteps(const RifEclipseSummaryAddress& resultAddress) const override;

View File

@@ -33,7 +33,8 @@
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifColumnBasedUserDataParser::RifColumnBasedUserDataParser(const QString& data)
RifColumnBasedUserDataParser::RifColumnBasedUserDataParser(const QString& data, QString* errorText)
: m_errorText(errorText)
{
parseTableData(data);
}
@@ -70,7 +71,18 @@ void RifColumnBasedUserDataParser::parseTableData(const QString& data)
do
{
auto table = RifEclipseUserDataParserTools::tableDataFromText(streamData);
std::vector<std::string> errorStrings;
auto table = RifEclipseUserDataParserTools::tableDataFromText(streamData, &errorStrings);
if (m_errorText)
{
for (auto s : errorStrings)
{
QString errorText = QString("\n%1").arg(QString::fromStdString(s));
m_errorText->append(errorText);
}
}
std::vector<ColumnInfo>& columnInfos = table.columnInfos();
int columnCount = static_cast<int>(columnInfos.size());
if (columnCount == 0) break;

View File

@@ -21,6 +21,7 @@
#include "RifEclipseSummaryAddress.h"
#include <QString>
#include <QPointer>
#include <vector>
@@ -33,7 +34,7 @@ class TableData;
class RifColumnBasedUserDataParser
{
public:
RifColumnBasedUserDataParser(const QString& data);
RifColumnBasedUserDataParser(const QString& data, QString* errorText = nullptr);
const std::vector<TableData>& tableData() const;
const ColumnInfo* columnInfo(size_t tableIndex, size_t columnIndex) const;
@@ -42,5 +43,6 @@ private:
void parseTableData(const QString& data);
private:
std::vector<TableData> m_tableDatas;
std::vector<TableData> m_tableDatas;
QString* m_errorText;
};