WSF
usmtf::TimePoint Class Reference

#include <TimePoint.hpp>

Inheritance diagram for usmtf::TimePoint:
Collaboration diagram for usmtf::TimePoint:

Public Member Functions

 TimePoint (bool aTimeQualifersAllowed=false) noexcept
bool ParseAndValidate (const Field &aField) override
const std::string & GetDay () const noexcept
const std::string & GetMonth () const noexcept
const std::string & GetYear () const noexcept
const std::string & GetTimeZone () const noexcept
const std::string & GetMinute () const noexcept
const std::string & GetHour () const noexcept
const std::string & GetStopTimeQualifier () const noexcept
Public Member Functions inherited from usmtf::FFIRN_Validator
 FFIRN_Validator ()=default
const std::string & GetRawContent () const noexcept
 Return the content of the field as it was in the USMTF set.
std::vector< std::string > SplitOnDelimeter (const std::string &value, const std::string &delimeter)
 Values separated by delimeter.
const std::string & GetFieldContent () const noexcept
Public Member Functions inherited from usmtf::Validatable
bool IsValid () const noexcept
Public Member Functions inherited from usmtf::ErrorManager
virtual ~ErrorManager ()=default
bool HasErrors () const noexcept
void LogErrors (std::ostream &aOut) const noexcept
const std::vector< ValidationError > & GetErrors () const

Protected Member Functions

bool IsValidStopTimeQualifier () noexcept
bool IsValidDateTimeGroup () noexcept
bool IsValidDayTimeMonth () noexcept
bool IsValidDayTime () noexcept
bool IsValidDay (const std::string &aDay) noexcept
bool IsValidHour (const std::string &aHour) noexcept
bool IsValidMinuteOrSecond (const std::string &aUnit) noexcept
bool IsValidTimeZone (const std::string &aTimeZone) noexcept
bool IsValidMonthName (const std::string &aMonth) noexcept
bool IsValidYear (const std::string &aYear) noexcept
bool ValidateDayTime (const std::string &aDayTime) noexcept
Protected Member Functions inherited from usmtf::FFIRN_Validator
bool ValidateByDescriptor (const FFIRN_DescriptorMap &aDescriptorMap)
 Speed up validation if descriptor is present. Runs all functions if it isn't.
void ClearErrorsIfValid (bool aHasAtLeastOnePassed) noexcept
void SetField (const Field &aField) noexcept
 Field Setter for internal use only.
Protected Member Functions inherited from usmtf::ErrorManager
void AddError (const ValidationError &aError) noexcept
void AddError (const std::string &aFailureReason, const std::string &aValueValidatied, const std::string &aOptionalSuggestion="") noexcept
void AddError (const std::string &aErrorMessage) noexcept
void AddErrors (const std::vector< ValidationError > &aErrors) noexcept
void ClearErrors () noexcept

Protected Attributes

bool mTimeQualifersAllowed
std::string mStopTimeQualifier
std::string mDay
std::string mHour
std::string mMinute
std::string mTimeZone
std::string mMonth
std::string mYear
Protected Attributes inherited from usmtf::FFIRN_Validator
Field mField

Additional Inherited Members

Public Types inherited from usmtf::FFIRN_Validator
using FFIRN_Func = std::function<bool(void)>
using FFIRN_DescriptorMap = std::unordered_map<std::string, FFIRN_Func>
Static Public Member Functions inherited from usmtf::FFIRN_Validator
static bool IsInSelection (const std::string &aValue, const std::vector< std::string > &choices) noexcept
static bool IsStringLength (const std::string &aValue, size_t aLength) noexcept
static size_t CheckForAnyDelimeter (const std::string &aValue, const std::vector< std::string > &aDelimeters) noexcept
 Returns the positions of a specified delimiter if present, npos if not.
static size_t CheckForAnyDelimeter (const std::string &aValue, const std::vector< std::string > &aDelimeters, std::string &aFoundDelimeter) noexcept
template<class T>
static bool IsInRange (T aValue, T aLowerBound, T aUpperBound) noexcept

Detailed Description

FFIRN_Validator responsible for the validation and property extraction of a TimePoint. A TimePoint is a field that indicates a point in time. It has many forms, they are fairly self explanatory, but the sheer number of options can be confusing.

TimePoint | | | | v v v v APERIOD/DISCRETE/141325ZFEB/142359ZFEB//

Constructor & Destructor Documentation

◆ TimePoint()

usmtf::TimePoint::TimePoint ( bool aTimeQualifersAllowed = false)
noexcept

Member Function Documentation

◆ GetDay()

const std::string & usmtf::TimePoint::GetDay ( ) const
noexcept

References mDay.

◆ GetHour()

const std::string & usmtf::TimePoint::GetHour ( ) const
noexcept

References mHour.

◆ GetMinute()

const std::string & usmtf::TimePoint::GetMinute ( ) const
noexcept

References mMinute.

◆ GetMonth()

const std::string & usmtf::TimePoint::GetMonth ( ) const
noexcept

References mMonth.

◆ GetStopTimeQualifier()

const std::string & usmtf::TimePoint::GetStopTimeQualifier ( ) const
noexcept

References mStopTimeQualifier.

◆ GetTimeZone()

const std::string & usmtf::TimePoint::GetTimeZone ( ) const
noexcept

References mTimeZone.

◆ GetYear()

const std::string & usmtf::TimePoint::GetYear ( ) const
noexcept

References mYear.

◆ IsValidDateTimeGroup()

◆ IsValidDay()

bool usmtf::TimePoint::IsValidDay ( const std::string & aDay)
protectednoexcept

◆ IsValidDayTime()

bool usmtf::TimePoint::IsValidDayTime ( )
protectednoexcept

◆ IsValidDayTimeMonth()

◆ IsValidHour()

bool usmtf::TimePoint::IsValidHour ( const std::string & aHour)
protectednoexcept

◆ IsValidMinuteOrSecond()

bool usmtf::TimePoint::IsValidMinuteOrSecond ( const std::string & aUnit)
protectednoexcept

◆ IsValidMonthName()

bool usmtf::TimePoint::IsValidMonthName ( const std::string & aMonth)
protectednoexcept

◆ IsValidStopTimeQualifier()

◆ IsValidTimeZone()

bool usmtf::TimePoint::IsValidTimeZone ( const std::string & aTimeZone)
protectednoexcept

◆ IsValidYear()

bool usmtf::TimePoint::IsValidYear ( const std::string & aYear)
protectednoexcept

◆ ParseAndValidate()

bool usmtf::TimePoint::ParseAndValidate ( const Field & aField)
overridevirtual

I am not a huge fan of violating command query separation. But, in this case it makes sense. The functions that come into ParseAndValidate have to parse to get value of the component, sometimes there are many components in a single field. Unfortunately parsing is an intertwined attribute of validation. You cant parse according to some rule set if the field is invalid, making it impossible to separate the two notions easily. I have opted to instead name the functions for what they are actually doing. Parsing components and validating them as well. Optionally members can be set within the function as well.

Implements usmtf::FFIRN_Validator.

Reimplemented in usmtf::VerifiedTimePoint.

References usmtf::FFIRN_Validator::ClearErrorsIfValid(), IsValidDateTimeGroup(), IsValidDayTimeMonth(), IsValidStopTimeQualifier(), mTimeQualifersAllowed, and usmtf::FFIRN_Validator::SetField().

◆ ValidateDayTime()

Member Data Documentation

◆ mDay

std::string usmtf::TimePoint::mDay
protected

◆ mHour

std::string usmtf::TimePoint::mHour
protected

◆ mMinute

std::string usmtf::TimePoint::mMinute
protected

◆ mMonth

std::string usmtf::TimePoint::mMonth
protected

◆ mStopTimeQualifier

std::string usmtf::TimePoint::mStopTimeQualifier
protected

◆ mTimeQualifersAllowed

bool usmtf::TimePoint::mTimeQualifersAllowed
protected

◆ mTimeZone

std::string usmtf::TimePoint::mTimeZone
protected

◆ mYear

std::string usmtf::TimePoint::mYear
protected

Referenced by GetYear(), and IsValidDateTimeGroup().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved