mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1966 : Use DATE if DATE is the only column present
This commit is contained in:
parent
56cd53a5f0
commit
cc59b85ee9
@ -109,47 +109,57 @@ bool RifColumnBasedUserData::parse(const QString& data, const QString& customWel
|
||||
}
|
||||
else
|
||||
{
|
||||
m_timeSteps.resize(m_timeSteps.size() + 1);
|
||||
std::vector<time_t>& timeSteps = m_timeSteps.back();
|
||||
|
||||
const ColumnInfo& ci = m_parser->tables()[tableIndex][timeColumnIndex];
|
||||
QDateTime startDate;
|
||||
if (ci.startQDateTime.isValid())
|
||||
|
||||
if (timeColumnIndex == dateColumnIndex)
|
||||
{
|
||||
startDate = ci.startQDateTime;
|
||||
for (const auto& timeStepValue : ci.observationDateTimes)
|
||||
{
|
||||
timeSteps.push_back(timeStepValue.toTime_t());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QString startDateString = QString::fromStdString(ci.startDateString);
|
||||
if (!startDateString.isEmpty())
|
||||
QDateTime startDate;
|
||||
if (ci.startQDateTime.isValid())
|
||||
{
|
||||
QString dateFormatString = "ddMMyyyy";
|
||||
|
||||
startDate = RiaQDateTimeTools::fromString(startDateString, dateFormatString);
|
||||
startDate = ci.startQDateTime;
|
||||
}
|
||||
else
|
||||
{
|
||||
startDate = RiaQDateTimeTools::epoch();
|
||||
QString startDateString = QString::fromStdString(ci.startDateString);
|
||||
if (!startDateString.isEmpty())
|
||||
{
|
||||
QString dateFormatString = "ddMMyyyy";
|
||||
|
||||
startDate = RiaQDateTimeTools::fromString(startDateString, dateFormatString);
|
||||
}
|
||||
else
|
||||
{
|
||||
startDate = RiaQDateTimeTools::epoch();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_timeSteps.resize(m_timeSteps.size() + 1);
|
||||
QString unit = QString::fromStdString(ci.unitName).trimmed().toUpper();
|
||||
|
||||
std::vector<time_t>& timeSteps = m_timeSteps.back();
|
||||
|
||||
QString unit = QString::fromStdString(ci.unitName).trimmed().toUpper();
|
||||
|
||||
if (unit == "DAY" || unit == "DAYS")
|
||||
{
|
||||
for (const auto& timeStepValue : ci.values)
|
||||
if (unit == "DAY" || unit == "DAYS")
|
||||
{
|
||||
QDateTime dateTime = RiaQDateTimeTools::addDays(startDate, timeStepValue);
|
||||
timeSteps.push_back(dateTime.toTime_t());
|
||||
for (const auto& timeStepValue : ci.values)
|
||||
{
|
||||
QDateTime dateTime = RiaQDateTimeTools::addDays(startDate, timeStepValue);
|
||||
timeSteps.push_back(dateTime.toTime_t());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (unit == "YEAR" || unit == "YEARS")
|
||||
{
|
||||
for (const auto& timeStepValue : ci.values)
|
||||
else if (unit == "YEAR" || unit == "YEARS")
|
||||
{
|
||||
QDateTime dateTime = RiaQDateTimeTools::addYears(startDate, timeStepValue);
|
||||
timeSteps.push_back(dateTime.toTime_t());
|
||||
for (const auto& timeStepValue : ci.values)
|
||||
{
|
||||
QDateTime dateTime = RiaQDateTimeTools::addYears(startDate, timeStepValue);
|
||||
timeSteps.push_back(dateTime.toTime_t());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,13 +89,16 @@ void RifColumnBasedUserDataParser::parseData(const QString& data)
|
||||
|
||||
for (size_t i = 0; i < columnCount; i++)
|
||||
{
|
||||
if (dateColumnIndex < columnCount && !startDate.isValid())
|
||||
if (dateColumnIndex < columnCount)
|
||||
{
|
||||
QDate candidate = RiaDateStringParser::parseDateString(entries[static_cast<int>(dateColumnIndex)].toStdString());
|
||||
if (candidate.isValid())
|
||||
QDate observationDate = RiaDateStringParser::parseDateString(entries[static_cast<int>(dateColumnIndex)].toStdString());
|
||||
|
||||
if (observationDate.isValid() && !startDate.isValid())
|
||||
{
|
||||
startDate.setDate(candidate);
|
||||
startDate.setDate(observationDate);
|
||||
}
|
||||
|
||||
table[i].observationDateTimes.push_back(QDateTime(observationDate));
|
||||
}
|
||||
|
||||
double entry = entries.at(static_cast<int>(i)).toDouble();
|
||||
@ -114,5 +117,4 @@ void RifColumnBasedUserDataParser::parseData(const QString& data)
|
||||
m_tables.push_back(table);
|
||||
|
||||
} while (streamData.good());
|
||||
|
||||
}
|
||||
|
@ -466,12 +466,14 @@ std::vector<std::string> RifEclipseUserDataParserTools::headerReader(std::string
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RifEclipseUserDataParserTools::hasTimeUnit(const std::string& line)
|
||||
bool RifEclipseUserDataParserTools::hasTimeUnit(const std::string& word)
|
||||
{
|
||||
if (line == "DAYS" ||
|
||||
line == "DAY" ||
|
||||
line == "YEARS" ||
|
||||
line == "YEAR")
|
||||
if (word == "DAYS" ||
|
||||
word == "DAY" ||
|
||||
word == "YEARS" ||
|
||||
word == "YEAR" ||
|
||||
word == "DATE" ||
|
||||
word == "DATES")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ struct ColumnInfo
|
||||
std::string dateFormatString;
|
||||
std::string startDateString;
|
||||
QDateTime startQDateTime;
|
||||
std::vector<QDateTime> observationDateTimes;
|
||||
};
|
||||
|
||||
//==================================================================================================
|
||||
|
@ -475,6 +475,56 @@ TEST(RifColumnBasedRsmspecParserTest, TestTableValuesHeaderWithSpaces)
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(RifColumnBasedRsmspecParserTest, TestTableDateOnly)
|
||||
{
|
||||
QString data;
|
||||
QTextStream out(&data);
|
||||
|
||||
out << "1\n";
|
||||
out << " -----------------------------------------\n";
|
||||
out << " SUMMARY OF RUN NORNE_ATW2013_RFTPLT_V3 EC\n";
|
||||
out << " -----------------------------------------\n";
|
||||
out << " DATE WBHP \n";
|
||||
out << " DATE BARSA \n";
|
||||
out << " B-1H \n";
|
||||
out << " \n";
|
||||
out << " ---------------------------\n";
|
||||
out << " 6-NOV-1997 0 \n";
|
||||
out << " 7-NOV-1997 0 \n";
|
||||
out << " 8-NOV-1997 0 \n";
|
||||
out << " 9-NOV-1997 0 \n";
|
||||
out << " 10-NOV-1997 0 \n";
|
||||
out << " 11-NOV-1997 0 \n";
|
||||
out << " 11-NOV-1997 0 \n";
|
||||
out << " 12-NOV-1997 0 \n";
|
||||
out << " 13-NOV-1997 0 \n";
|
||||
out << " 14-NOV-1997 0 \n";
|
||||
out << " 14-NOV-1997 0 \n";
|
||||
out << " 17-NOV-1997 0 \n";
|
||||
out << " 19-NOV-1997 0 \n";
|
||||
out << " 21-NOV-1997 0 \n";
|
||||
out << " 23-NOV-1997 0 \n";
|
||||
out << " 25-NOV-1997 0 \n";
|
||||
out << " 28-NOV-1997 0 \n";
|
||||
out << " 29-NOV-1997 0 \n";
|
||||
out << " 1-DEC-1997 0 \n";
|
||||
out << " 2-DEC-1997 0 \n";
|
||||
out << " 4-DEC-1997 0 \n";
|
||||
out << " 7-DEC-1997 0 \n";
|
||||
out << " 10-DEC-1997 0 \n";
|
||||
out << " 13-DEC-1997 0 \n";
|
||||
out << " 15-DEC-1997 0 \n";
|
||||
out << " 17-DEC-1997 0 \n";
|
||||
|
||||
RifColumnBasedUserDataParser parser = RifColumnBasedUserDataParser(data);
|
||||
|
||||
std::vector< std::vector<ColumnInfo> > tables = parser.tables();
|
||||
ASSERT_EQ(tables.size(), 1);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user