#4017 Add function used to determine date format from text string

This commit is contained in:
Magne Sjaastad 2019-04-29 12:55:39 +02:00
parent 80718901d1
commit 77a12f13c1
3 changed files with 150 additions and 0 deletions

View File

@ -288,6 +288,77 @@ void RicPasteAsciiDataToSummaryPlotFeatureUi::createNewPlot()
m_createNewPlot = true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(const QString& dateString)
{
std::vector<int> indicesForDot;
std::vector<int> indicesForSlash;
std::vector<int> values;
{
QStringList split = dateString.split(".", QString::SkipEmptyParts);
if (split.size() == 3)
{
values.push_back(split.at(0).toInt());
values.push_back(split.at(1).toInt());
values.push_back(split.at(2).toInt());
if (values[0] > 31) return DATE_YYYYMMDD_DOT_SEPARATED;
if (values[2] > 31) return DATE_DDMMYYYY_DOT_SEPARATED;
}
}
{
QStringList split = dateString.split("-", QString::SkipEmptyParts);
if (split.size() == 3)
{
values.push_back(split.at(0).toInt());
values.push_back(split.at(1).toInt());
values.push_back(split.at(2).toInt());
if (values[0] > 31) return DATE_YYYYMMDD_DASH_SEPARATED;
if (values[2] > 31) return DATE_DDMMYYYY_DASH_SEPARATED;
}
}
{
QStringList split = dateString.split("/", QString::SkipEmptyParts);
if (split.size() == 3)
{
values.push_back(split.at(0).toInt());
values.push_back(split.at(1).toInt());
values.push_back(split.at(2).toInt());
if (split.at(0).size() == 2 && split.at(1).size() == 2 && split.at(2).size() == 2) return DATE_MMDDYY_SLASH_SEPARATED;
if (values[0] > 31)
{
return DATE_YYYYMMDD_SLASH_SEPARATED;
}
else if (values[2] > 31)
{
if (values[0] > 12)
{
return DATE_DDMMYYYY_SLASH_SEPARATED;
}
if (values[1] > 12)
{
return DATE_MMDDYYYY_SLASH_SEPARATED;
}
return DATE_DDMMYYYY_SLASH_SEPARATED;
}
}
}
return DATE_DDMMYYYY_DOT_SEPARATED;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -133,6 +133,8 @@ public:
const AsciiDataParseOptions parseOptions() const;
void createNewPlot();
static DateFormat dateFormatFromString(const QString& dateString);
protected:
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;

View File

@ -837,3 +837,80 @@ TEST(RifColumnBasedRsmspecParserTest, HasOnlyValidDoubleValues)
EXPECT_FALSE(RifEclipseUserDataParserTools::hasOnlyValidDoubleValues(words, &doubleValues));
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(RifColumnBasedRsmspecParserTest, TestParsingOfDateString)
{
{
QString txt = "22.12.1900";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df = RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_DDMMYYYY_DOT_SEPARATED, df);
}
{
QString txt = "22-12-1900";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_DDMMYYYY_DASH_SEPARATED, df);
}
{
QString txt = "22/12/1900";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_DDMMYYYY_SLASH_SEPARATED, df);
}
{
QString txt = "1900.12.24";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_YYYYMMDD_DOT_SEPARATED, df);
}
{
QString txt = "1900-12-24";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_YYYYMMDD_DASH_SEPARATED, df);
}
{
QString txt = "1900/12/24";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_YYYYMMDD_SLASH_SEPARATED, df);
}
{
QString txt = "12/22/1900";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_MMDDYYYY_SLASH_SEPARATED, df);
}
{
QString txt = "22/12/1900";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_DDMMYYYY_SLASH_SEPARATED, df);
}
{
QString txt = "12/22/30";
RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat df =
RicPasteAsciiDataToSummaryPlotFeatureUi::dateFormatFromString(txt);
EXPECT_EQ(RicPasteAsciiDataToSummaryPlotFeatureUi::DateFormat::DATE_MMDDYY_SLASH_SEPARATED, df);
}
}