/// <summary> /// Attempts to validate an incoming floating-point tag value. /// </summary> /// <param name="tag">The tag for the value.</param> /// <param name="originalValue">The incoming value.</param> /// <param name="stateSet">The state set for the <paramref name="tag"/>.</param> /// <param name="validatedValue">The validated value.</param> /// <returns> /// A flag that indicates if the value was validated. If <paramref name="stateSet"/> /// is <see langword="null"/>, or if it does not match the name specified in the /// <see cref="TagDefinition.StateSet"/> property of the <paramref name="tag"/>, the /// result will be <see langword="false"/>. /// </returns> private static bool TryValidateStateValue(TagDefinition tag, TagValue originalValue, StateSet stateSet, out TagValue validatedValue) { if (stateSet == null || !stateSet.Name.Equals(tag.StateSet, StringComparison.OrdinalIgnoreCase)) { validatedValue = null; return(false); } StateSetItem state = null; if (!String.IsNullOrWhiteSpace(originalValue.TextValue)) { state = stateSet[originalValue.TextValue]; } if (state == null) { var valAsInt = (int)originalValue.NumericValue; state = stateSet.States.FirstOrDefault(x => x.Value == valAsInt); } if (state == null) { validatedValue = null; return(false); } validatedValue = new TagValue(originalValue.UtcSampleTime, state.Value, state.Name, originalValue.Quality, null); return(true); }
/// <summary> /// Creates a new <see cref="StateSetItemDto"/> object from the specified <see cref="StateSetItem"/>. /// </summary> /// <param name="item">The <see cref="StateSetItem"/> to copy the configuration from.</param> /// <exception cref="ArgumentNullException"><paramref name="item"/> is <see langword="null"/>.</exception> internal static StateSetItemDto ToStateSetItemDto(this StateSetItem item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } return(new StateSetItemDto() { Name = item.Name, Value = item.Value }); }