/////////////////////////////////////////////////////////////////////////////////////////////////// ////////////BUILD FROM V2.1 SCHEMA ////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Initializes a new instance of the <see cref="TimeRangeMutableCore"/> class. /// </summary> /// <param name="type"> /// The type. /// </param> public TimeRangeMutableCore(TimeRangeValueType type) : base(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.TimeRange)) { if (type.AfterPeriod != null) { this._isIsRange = false; // FUNC 2.1 ObservationalTimePeriodType - does this work? this.endDate = DateUtil.FormatDate(type.AfterPeriod.TypedValue, true); this.isEndInclusive = type.AfterPeriod.isInclusive; } if (type.BeforePeriod != null) { this._isIsRange = false; this.startDate = DateUtil.FormatDate(type.BeforePeriod.TypedValue, true); this.isStartInclusive = type.BeforePeriod.isInclusive; } if (type.StartPeriod != null) { this._isIsRange = true; this.startDate = DateUtil.FormatDate(type.StartPeriod.TypedValue, true); this.isStartInclusive = type.StartPeriod.isInclusive; } if (type.EndPeriod != null) { this._isIsRange = true; this.startDate = DateUtil.FormatDate(type.EndPeriod.TypedValue, true); this.isEndInclusive = type.EndPeriod.isInclusive; } this.Validate(); }
/** * Builds a time range from time range value from XML * @param timeRangeValueType * @return */ private ITimeRange BuildTimeRange(TimeRangeValueType timeRangeValueType) { if (timeRangeValueType == null) { return null; } bool range = false; ISdmxDate startDate = null; ISdmxDate endDate = null; bool endInclusive = false; bool startInclusive = false; if (timeRangeValueType.AfterPeriod != null) { TimePeriodRangeType afterPeriod = timeRangeValueType.AfterPeriod; startDate = new SdmxDateCore(afterPeriod.TypedValue.ToString()); startInclusive = afterPeriod.isInclusive; } else if (timeRangeValueType.BeforePeriod != null) { TimePeriodRangeType beforePeriod = timeRangeValueType.BeforePeriod; endDate = new SdmxDateCore(beforePeriod.TypedValue.ToString()); endInclusive = beforePeriod.isInclusive; } else { //case that range is set range = true; TimePeriodRangeType startPeriod = timeRangeValueType.StartPeriod; startDate = new SdmxDateCore(startPeriod.TypedValue.ToString()); startInclusive = startPeriod.isInclusive; TimePeriodRangeType endPeriod = timeRangeValueType.EndPeriod; endDate = new SdmxDateCore(endPeriod.TypedValue.ToString()); endInclusive = endPeriod.isInclusive; } return new TimeRangeCore(range, startDate, endDate, startInclusive, endInclusive); }
/////////////////////////////////////////////////////////////////////////////////////////////////// ////////////BUILD FROM V2.1 SCHEMA ////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Initializes a new instance of the <see cref="TimeRangeCore"/> class. /// </summary> /// <param name="type"> /// The type. /// </param> /// <param name="parent"> /// The parent. /// </param> public TimeRangeCore(TimeRangeValueType type, ISdmxStructure parent) : base(SdmxStructureType.GetFromEnum(SdmxStructureEnumType.TimeRange), parent) { if (type.AfterPeriod != null) { this._isRange = false; // FUNC 2.1 ObservationalTimePeriodType - does this work? this._endDate = new SdmxDateCore(type.AfterPeriod.TypedValue.ToString()); this._isEndInclusive = type.AfterPeriod.isInclusive; } if (type.BeforePeriod != null) { this._isRange = false; this._startDate = new SdmxDateCore(type.BeforePeriod.TypedValue.ToString()); this._isStartInclusive = type.BeforePeriod.isInclusive; } if (type.StartPeriod != null) { this._isRange = true; this._startDate = new SdmxDateCore(type.StartPeriod.TypedValue.ToString()); this._isStartInclusive = type.StartPeriod.isInclusive; } if (type.EndPeriod != null) { this._isRange = true; this._endDate = new SdmxDateCore(type.EndPeriod.TypedValue.ToString()); this._isEndInclusive = type.EndPeriod.isInclusive; } this.Validate(); }
/** * builds the version reference from the XML beans values * @param version * @param versionFromType * @param versionToType * @return */ private IComplexVersionReference BuildVersionReference(string version, TimeRangeValueType versionFromType, TimeRangeValueType versionToType) { TertiaryBool returnLatest = TertiaryBool.GetFromEnum(TertiaryBoolEnumType.Unset); string emptyCheckedString = null; if (!string.IsNullOrWhiteSpace(version)) { if (version.Equals("*")) { returnLatest = TertiaryBool.GetFromEnum(TertiaryBoolEnumType.True); emptyCheckedString = null; } else { emptyCheckedString = version; returnLatest = TertiaryBool.GetFromEnum(TertiaryBoolEnumType.False); } } ITimeRange validFrom = BuildTimeRange(versionFromType); ITimeRange validTo = BuildTimeRange(versionToType); return new ComplexVersionReferenceCore(returnLatest, emptyCheckedString, validFrom, validTo); }
/// <summary> /// Handles the last updated time. /// </summary> /// <param name="complexDataQuery">The complex data query.</param> /// <param name="whereType">Type of the where.</param> private static void HandleLastUpdatedTime(IComplexDataQuery complexDataQuery, DataParametersType whereType) { foreach (var timeRange in complexDataQuery.LastUpdatedDateTimeRange) { var timeRangeValueType = new TimeRangeValueType(); var startTimePeriodRangeType = new TimePeriodRangeType(); startTimePeriodRangeType.isInclusive = timeRange.IsStartInclusive; startTimePeriodRangeType.TypedValue = timeRange.StartDate.DateInSdmxFormat; timeRangeValueType.StartPeriod = startTimePeriodRangeType; var endTimePeriodRangeType = new TimePeriodRangeType(); endTimePeriodRangeType.isInclusive = timeRange.IsEndInclusive; endTimePeriodRangeType.TypedValue = timeRange.StartDate.DateInSdmxFormat; timeRangeValueType.EndPeriod = endTimePeriodRangeType; whereType.Updated.Add(timeRangeValueType); } }