public static DataTemplateComponent ComunicationInterfaceToTemplate( CommunicationInterfaceComponent communicationInterfaceComponent) { var lastName = communicationInterfaceComponent.LastName.Replace('[', '_'); lastName = lastName.Replace(']', '_'); DataTemplateComponent newComposite = new DataTemplateComposite(lastName, null, null); if (communicationInterfaceComponent.GetType() == typeof (CommunicationInterfaceComposite)) { foreach (var component in ((CommunicationInterfaceComposite)communicationInterfaceComponent).Cast<CommunicationInterfaceComponent>()) { newComposite.Add(ComunicationInterfaceToTemplate(component)); } } else { newComposite = new DataTemplateLeaf(lastName, null, DataTemplateComponent.DataTemplateComponentType.Assignment, communicationInterfaceComponent); } return newComposite; }
public static DataTemplateComponent XmlFileToTemplate( string fileName) { var template = new DataTemplateComposite("Template", null, new CommunicationInterfaceComposite("Template")); var xmlReader = XmlReader.Create(fileName); xmlReader.MoveToContent(); DataTemplateComponent actualTemplate = template; CommunicationInterfaceHandler actualCommunicationInterfaceHandler = null; uint actualId = 0; var componentWasNotFound = false; while (xmlReader.Read()) { switch (xmlReader.NodeType) { case XmlNodeType.Element: DataTemplateComponent newTemplate = new DataTemplateComposite(xmlReader.Name, null, null); if (!xmlReader.IsEmptyElement) { actualTemplate.Add(newTemplate); actualTemplate = newTemplate; break; } var id = Convert.ToUInt32(xmlReader.GetAttribute("InterfaceId"), 16); if (id != actualId) { actualCommunicationInterfaceHandler = (CommunicationInterfaceHandler) RegistryContext.Registry.CommunicationInterfaceHandlers.ReturnComponent(id); actualId = id; } var conditionsCheck = false; if (actualCommunicationInterfaceHandler != null) { var component = actualCommunicationInterfaceHandler.ReadInterfaceComposite.ReturnComponent( xmlReader.GetAttribute("Name")); if (component != null) { newTemplate = new DataTemplateLeaf(xmlReader.Name, null, DataTemplateComponent.DataTemplateComponentType.Assignment, component); conditionsCheck = true; } } if (!conditionsCheck) { newTemplate = new DataTemplateLeaf("component_not_available", null, DataTemplateComponent.DataTemplateComponentType.Assignment, null); componentWasNotFound = true; } actualTemplate.Add(newTemplate); break; case XmlNodeType.EndElement: actualTemplate = actualTemplate.Parent; break; } } if (!componentWasNotFound) return template; MessageBox.Show("At least one of the template components was not found within available interfaces.", "Component was not found"); Logger.Log("Template Builder: At least one of the template components was not found within available interfaces."); return template; }