Quickstarts.TestData.ValidateQuality C# (CSharp) Method

ValidateQuality() public static method

Validates the formatted HA quality code and returns a StatusCode.
public static ValidateQuality ( object formattedValue ) : Opc.Ua.StatusCode
formattedValue object
return Opc.Ua.StatusCode
        public static StatusCode ValidateQuality(object formattedValue)
        {
            string value = formattedValue as string;

            if (String.IsNullOrEmpty(value))
            {
                return StatusCodes.Good;
            }

            string[] parts = value.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            StatusCode statusCode = StatusCodes.Good;

            if (parts.Length > 0)
            {
                switch (parts[0].Trim())
                {
                    case "G":
                    case "Good": { statusCode = StatusCodes.Good; break; }
                    case "B":
                    case "Bad": { statusCode = StatusCodes.Bad; break; }
                    case "U":
                    case "Uncertain": { statusCode = StatusCodes.Uncertain; break; }
                    case "USN":
                    case "UncertainDataSubNormal": { statusCode = StatusCodes.UncertainDataSubNormal; break; }
                    case "BND":
                    case "BadNoData": { statusCode = StatusCodes.BadNoData; break; }

                    default:
                    {
                        throw new FormatException("Quality must be a valid UA quality.");
                    }
                }
            }

            for (int ii = 1; ii < parts.Length; ii++)
            {
                switch (parts[ii].Trim())
                {
                    case "I":
                    case "Interpolated": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.Interpolated); break; }
                    case "C": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.Calculated); break; }
                    case "Calculated": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.Calculated); break; }
                    case "P": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.Partial); break; }
                    case "Partial": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.Partial); break; }
                    case "M": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.MultipleValues); break; }
                    case "MultipleValues": { statusCode = statusCode.SetAggregateBits(statusCode.AggregateBits | AggregateBits.MultipleValues); break; }
                    
                    default:
                    {
                        throw new FormatException("Aggregate bits are not valid.");
                    }
                }
            }

            return statusCode;
        }
        #endregion