public void ProcessSignal( SignalRequirementsSignalRequirement signalRequirement ) { InstrumentDAO dao = new InstrumentDAO(); List<Tuple<string, object, string>> attributes = new List<Tuple<string, object, string>>(); foreach (SignalRequirementsSignalRequirementTsfClassAttribute attribute in signalRequirement.TsfClassAttribute) { TsfClassAttributeName name = attribute.Name; if (attribute.Value != null) { if (attribute.Value.Item is DatumType) { DatumType datum = attribute.Value.Item as DatumType; Object value = Datum.GetNominalDatumValue(datum); if (value != null) { attributes.Add(new Tuple<string, object, string>(name.Value, value, datum.unitQualifier)); } } } } lvInstruments.BeginUpdate(); try { foreach (ListViewItem lvi in lvInstruments.Items) lvi.BackColor = Color.White; ICollection<object> ids = dao.FindCapableEquipment(attributes); foreach (ListViewItem lvi in lvInstruments.Items) { var testStationInstrumentData = lvi.Tag as TestStationInstrumentData; if (testStationInstrumentData != null) { var instrument = testStationInstrumentData.InstrumentDescription; if (instrument != null) { foreach (var id in ids) { if (id.Equals( instrument.uuid )) lvi.BackColor = Color.PaleGreen; } } } } } catch (Exception e2) { LogManager.Debug("Error In TSF Class: {0}", signalRequirement.TsfClass.tsfClassName); foreach (Tuple<string, object, string> tuple in attributes) { LogManager.Debug(" {0} = {1} {2}", tuple.Item1, tuple.Item2, tuple.Item3); } } lvInstruments.EndUpdate(); }
public void ProcessSignal(SignalRequirementsSignalRequirement signalRequirement) { var dao = new InstrumentDAO(); var attributes = ( from attribute in signalRequirement.TsfClassAttribute let name = attribute.Name where attribute.Value != null where attribute.Value.Item is DatumType let value = Datum.GetNominalDatumValue( (DatumType) attribute.Value.Item ) let qualifier = ((DatumType)attribute.Value.Item).unitQualifier where value != null select new Tuple<string, object, string>( name.Value, value, qualifier ) ).ToList(); lvTestStations.BeginUpdate(); try { foreach (ListViewItem lvi in lvTestStations.Items) lvi.BackColor = Color.White; ICollection<object> ids = dao.FindCapableEquipment(attributes); foreach (ListViewItem lvi in lvTestStations.Items) { var instrument = lvi.Tag as TestStationDescription11; if (instrument != null) { foreach (var id in ids) { if (id.Equals(instrument.uuid)) lvi.BackColor = Color.PaleGreen; } } } } catch (Exception e2) { LogManager.Debug("Error In TSF Class: {0}", signalRequirement.TsfClass.tsfClassName); foreach (Tuple<string, object, string> tuple in attributes) { LogManager.Debug(" {0} = {1} {2}", tuple.Item1, tuple.Item2, tuple.Item3); } } lvTestStations.EndUpdate(); }
public string Analyze( string testDescriptionXml ) { string xml = ""; try { var dao = new InstrumentDAO(); var testDescription = TestDescription.Deserialize( testDescriptionXml ); var signalTypeLookup = new Dictionary<string, SignalAnalysisType>(); var signalList = new List<string>(); Dictionary<SignalRequirementsSignalRequirement, ICollection<object>> equips = Build( testDescription ); foreach (SignalRequirementsSignalRequirement signalRequirement in testDescription.SignalRequirements) { string name = signalRequirement.TsfClass.tsfClassName; string id = signalRequirement.TsfClass.tsfLibraryID; SignalRole role = signalRequirement.role; if ("SHORT".Equals( name )) continue; if ("".Equals( name )) continue; SignalAnalysisType sat = null; if (!signalTypeLookup.ContainsKey( name )) { sat = new SignalAnalysisType(); sat.Type = name; signalTypeLookup.Add( name, sat ); } sat = signalTypeLookup[name]; SignalInstance si = new SignalInstance(); si.Tsf = id; foreach ( SignalRequirementsSignalRequirementTsfClassAttribute tsfClassAttribute in signalRequirement.TsfClassAttribute) { SignalInstanceAttribute sia = new SignalInstanceAttribute(); sia.Name = tsfClassAttribute.Name.Value; sia.Value = tsfClassAttribute.Value.ToString(); if (tsfClassAttribute.Value.Item is DatumType) { object v = Datum.GetNominalDatumValue( (DatumType) tsfClassAttribute.Value.Item ); sia.NominalValue = v==null?null:v.ToString(); sia.Qualifier = ( (DatumType) tsfClassAttribute.Value.Item ).unitQualifier; } si.AddAttribute(sia); } if (!signalList.Contains( name + id + si )) { signalList.Add( name + id + si ); sat.AddSignal( si ); Console.WriteLine( name + si ); } } SignalAnalysis signalAnalysis = new SignalAnalysis(); signalAnalysis.Uut = new Uut(); if (testDescription.UUT != null && testDescription.UUT.Description != null && testDescription.UUT.Description.Item != null) { var id = testDescription.UUT.Description.Item as ItemDescription; var docRef = testDescription.UUT.Description.Item as DocumentReference; if (docRef != null) { signalAnalysis.Uut.Name = docRef.DocumentName; signalAnalysis.Uut.Uuid = docRef.uuid; } else if (id != null) { signalAnalysis.Uut.Name = id.name; signalAnalysis.Uut.Uuid = id.Identification.ModelName; signalAnalysis.Uut.Version = id.version; } } signalAnalysis.Tps = ATMLContext.CurrentProjectName; signalAnalysis.RunDateTime = String.Format("{0:yyyy-dd-MM HH:mm:ss}", DateTime.Now); foreach (var testStation in ATMLAllocator.Instance.SelectedTestStations) { var tsa = new TestStationSignalAnalysis(); tsa.Name = testStation.name; tsa.Uuid = testStation.uuid; signalAnalysis.AddTestStation( tsa ); foreach (SignalAnalysisType signalType in signalTypeLookup.Values) { SignalAnalysisType copy = signalType.Copy(); tsa.AddSignal(copy); foreach (var signalInstance in copy.SignalInstances) { foreach (var signalInstanceAttribute in signalInstance.Attributes) { try { if (signalInstanceAttribute.NominalValue != null) { bool isValid = dao.TestAttribute( testStation.uuid, signalInstanceAttribute.Name, signalInstanceAttribute.NominalValue, signalInstanceAttribute.Qualifier); signalInstanceAttribute.IsValid = isValid; } } catch (Exception err) { LogManager.SourceError(ATMLAllocator.SOURCE, err); } } } } } xml = XmlUtils.SerializeObject( signalAnalysis ); } catch (Exception e) { LogManager.SourceError(ATMLAllocator.SOURCE, e); } return xml; }
public Dictionary<SignalRequirementsSignalRequirement, ICollection<object>> Build(TestDescription testDescription) { var requiredSignals = new Dictionary<SignalRequirementsSignalRequirement, ICollection<object>>(); foreach (SignalRequirementsSignalRequirement signalRequirement in testDescription.SignalRequirements) { var attributes = new List<Tuple<string, object, string>>(); var dao = new InstrumentDAO(); TsfClass tsfClass = signalRequirement.TsfClass; if (tsfClass.tsfClassName.Equals("SHORT")) continue; if (string.IsNullOrWhiteSpace(tsfClass.tsfClassName)) continue; foreach (SignalRequirementsSignalRequirementTsfClassAttribute attribute in signalRequirement.TsfClassAttribute) { TsfClassAttributeName name = attribute.Name; if (attribute.Value != null) { if (attribute.Value.Item is DatumType) { DatumType datum = attribute.Value.Item as DatumType; Object value = Datum.GetNominalDatumValue(datum); if (value != null) { attributes.Add(new Tuple<string, object, string>(name.Value, value, datum.unitQualifier)); } } } } try { ICollection<object> capableEquipment = dao.FindCapableEquipment(attributes); requiredSignals.Add(signalRequirement, capableEquipment ); } catch (Exception e2) { LogManager.SourceError(ATMLAllocator.SOURCE, "Error In TSF Class: {0} - ERROR: {1}", tsfClass.tsfClassName, e2.Message ); LogManager.Debug( e2 ); foreach (var tuple in attributes) { LogManager.SourceError(ATMLAllocator.SOURCE, " {0} = {1}", tuple.Item1, tuple.Item2); } } } return requiredSignals; }