/// <summary> /// Parses the value types of the incoming component value type, and returns the complex component value to construct in the selection. /// </summary> /// <param name="compValue"> /// The component value. /// </param> /// <param name="compType"> /// The component type : either a dimension, time dimension, attribute or primary measure. /// </param> /// <returns> /// The set with the ComplexCompoentValue objects. /// </returns> private IList<IComplexComponentValue> GetComplexComponentValues(DataStructureComponentValueQueryType compValue, SdmxStructureEnumType compType) { IList<IComplexComponentValue> comValues = new List<IComplexComponentValue>(); IComplexComponentValue comValue = null; //Numeric Values if (compValue.NumericValue != null) { foreach (NumericValue numerValue in compValue.NumericValue) { OrderedOperator orderedOperator = OrderedOperator.ParseString([email protected]()); comValue = new ComplexComponentValueImpl(numerValue.TypedValue.ToString(CultureInfo.InvariantCulture), orderedOperator, compType); comValues.Add(comValue); } } //Time Value if (compValue.TimeValue != null) { foreach (TimeValue timeValue in compValue.TimeValue) { OrderedOperator orderedOperator = OrderedOperator.ParseString([email protected]()); comValue = new ComplexComponentValueImpl(timeValue.TypedValue.ToString(), orderedOperator, compType); comValues.Add(comValue); } } //Text Value applicable only for attribute and primary measure if (compType.Equals(SdmxStructureEnumType.PrimaryMeasure) || compType.Equals(SdmxStructureEnumType.DataAttribute)) { //It's a generic type but the type will always be one if (compValue.TextValue != null) { foreach (TextValue textValue in compValue.TextValue) { TextSearch textOperator = TextSearch.ParseString([email protected]()); comValue = new ComplexComponentValueImpl(textValue.ToString(), textOperator, compType); comValues.Add(comValue); } } } //Value if (compValue.Value != null) { OrderedOperator orderedOperator = OrderedOperator.ParseString([email protected]()); comValue = new ComplexComponentValueImpl(compValue.Value.ToString(), orderedOperator, compType); comValues.Add(comValue); } return comValues; }
/// <summary> /// Sets the simple operator and value. /// </summary> /// <param name="rootObject">The root object.</param> /// <param name="complexComponentValue">The complex component value.</param> private static void SetSimpleOperatorAndValue(DataStructureComponentValueQueryType rootObject, IComplexComponentValue complexComponentValue) { string queryOperator = complexComponentValue.OrderedOperator != null ? complexComponentValue.OrderedOperator.OrdOperator : DefaultEqualOperator; var simpleValueType = new SimpleValueType { @operator = queryOperator, TypedValue = complexComponentValue.Value }; rootObject.Value = new Value(simpleValueType); }
/// <summary> /// Sets the time operator and value. /// </summary> /// <param name="rootObject">The root object.</param> /// <param name="complexComponentValue">The complex component value.</param> private static void SetTimeOperatorAndValue(DataStructureComponentValueQueryType rootObject, IComplexComponentValue complexComponentValue) { string queryOperator = complexComponentValue.OrderedOperator != null ? complexComponentValue.OrderedOperator.OrdOperator : DefaultEqualOperator; var timePeriodValueType = new TimePeriodValueType { @operator = queryOperator, TypedValue = complexComponentValue.Value }; rootObject.TimeValue.Add(new TimeValue(timePeriodValueType)); }
/// <summary> /// Sets the simple operator and value. /// </summary> /// <param name="rootObject">The root object.</param> /// <param name="complexComponentValue">The complex component value.</param> private static void SetTextOperatorAndValue(DataStructureComponentValueQueryType rootObject, IComplexComponentValue complexComponentValue) { string queryOperator = complexComponentValue.TextSearchOperator != null ? complexComponentValue.TextSearchOperator.Operator : DefaultEqualOperator; var queryTextType = new QueryTextType { @operator = queryOperator, TypedValue = complexComponentValue.Value }; var textValue = new TextValue(queryTextType); rootObject.TextValue.Add(textValue); }
/// <summary> /// Sets the numeric operator and value. /// </summary> /// <param name="rootObject">The root object.</param> /// <param name="complexComponentValue">The complex component value.</param> private static void SetNumericOperatorAndValue(DataStructureComponentValueQueryType rootObject, IComplexComponentValue complexComponentValue) { var numericValue = new NumericValue { TypedValue = decimal.Parse(complexComponentValue.Value, CultureInfo.InvariantCulture), @operator = complexComponentValue.OrderedOperator.OrdOperator }; rootObject.NumericValue.Add(numericValue); }
/// <summary> /// Sets the operator and value. /// </summary> /// <param name="component">The component.</param> /// <param name="complexComponentValue">The complex component value.</param> /// <param name="dataStructureComponentValueQueryType">Type of the data structure component value query.</param> private static void SetOperatorAndValue(IComponent component, IComplexComponentValue complexComponentValue, DataStructureComponentValueQueryType dataStructureComponentValueQueryType) { var valueType = GetValueType(component, complexComponentValue); switch (valueType) { case ValueType.NumericValue: SetNumericOperatorAndValue(dataStructureComponentValueQueryType, complexComponentValue); break; case ValueType.TextValue: SetTextOperatorAndValue(dataStructureComponentValueQueryType, complexComponentValue); break; case ValueType.TimeValue: SetTimeOperatorAndValue(dataStructureComponentValueQueryType, complexComponentValue); break; case ValueType.Value: SetSimpleOperatorAndValue(dataStructureComponentValueQueryType, complexComponentValue); break; } }