Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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
            });
        }