using System; using System.Text; namespace DatabaseExport { public class TestObjectChannel : TestObjectTemplateChannel, /*INotifyPropertyChanged,*/ IComparable { private const string CURRENT_SUFFIX = "_CU"; public const int CHANNEL_IDX_UNKNOWN = -1; public enum SquibChannelTypes { None, //Non-squib channels Voltage, Current } // #endregion public string GetGraphID() { return SquibChannelType == SquibChannelTypes.Current ? GetId() + CURRENT_SUFFIX : GetId(); } public string GetId() { return GetIdWithSpecificChannelId(Channel.Id); } public string GetIdWithSpecificChannelId(long id) { return $"{TestObject.SerialNumber}_{Channel.MMEChannelType}_{id}"; } public SquibChannelTypes SquibChannelType { get; set; } public int CompareTo(TestObjectChannel right) { if (null == right) { return 1; } if (this == right) { return 0; } var comp = DisplayOrder.CompareTo(right.DisplayOrder); if (0 != comp) { return comp; } comp = Name.CompareTo(right.Name); if (0 != comp) { return comp; } if (null != TestObject && null != right.TestObject) { comp = TestObject.SerialNumberOrOriginalSerialNumber.CompareTo(right.TestObject.SerialNumberOrOriginalSerialNumber); if (0 != comp) { return comp; } } return 0; } public string SensorSerialNumber { get => GetProperty("SensorSerialNumber", "") as string; set => SetProperty("SensorSerialNumber", value); } private const char ChannelSeparator = 'x'; public string HardwareId { get => GetProperty("HardwareId", "") as string; set { if (null != value) { var tokens = value.Split('_'); if (3 == tokens.Length) { var sb = new StringBuilder(); sb.AppendFormat("{0}_{1}", tokens[0], tokens[1]); var index = tokens[2].IndexOf(ChannelSeparator); if (index >= 0) { sb.Append(tokens[2].Substring(index)); } value = sb.ToString(); } } SetProperty("HardwareId", value); } } private ISO.TestObject _testObject = null; public ISO.TestObject TestObject => _testObject; public TestObjectChannel(TestObjectTemplateChannel copy, ISO.TestObject testObject, ISO.TestObjectTemplate template) : base(copy, template) { _testObject = testObject; } public string GetID() { return GetIDWithSpecificChannelId(Channel.Id); } public string GetIDWithSpecificChannelId(long id) { return string.Format("{0}_{1}_{2}", _testObject.SerialNumber, Channel.MMEChannelType, id); } private int _channelIDX = CHANNEL_IDX_UNKNOWN; public int ChannelIDX { get => _channelIDX; set => _channelIDX = value; } } }