/// <summary> /// The PopulateTrailer method populates the trailer elements /// in an XmlDictionary instance with the elements from the /// source dictionary. /// </summary> /// <param name="xmlDictionary"> /// The XmlDictionary instance that is being populated. /// </param> /// <param name="fixDictionary"> /// The FixDictionary instance that is the source of the /// elements the XmlDictionary is to be populated with. /// </param> private static void PopulateTrailer(XmlDictionary xmlDictionary, FixDictionary fixDictionary) { // REC: Iterate over all of the trailer elements in the // source dictionary and convert them into instances of // their corresponding XML serializable types: foreach (IFixDxElement dxElement in fixDictionary.Trailer) { if (dxElement is FixDxFieldReference) { FixDxFieldReference fieldReference = dxElement as FixDxFieldReference; XmlFixDxFieldReference xmlReference = new XmlFixDxFieldReference(); xmlReference.Name = fieldReference.Name; xmlReference.Required = fieldReference.Required; xmlDictionary.Trailer.Elements.Add(xmlReference); } else if (dxElement is FixDxBlockReference) { FixDxBlockReference blockReference = dxElement as FixDxBlockReference; XmlFixDxBlockReference xmlReference = new XmlFixDxBlockReference(); xmlReference.Name = blockReference.Name; xmlReference.Required = blockReference.Required; xmlDictionary.Trailer.Elements.Add(xmlReference); } else if (dxElement is FixDxGroupReference) { FixDxGroupReference groupReference = dxElement as FixDxGroupReference; XmlFixDxGroupReference xmlReference = new XmlFixDxGroupReference(); xmlReference.Name = groupReference.Name; xmlReference.Required = groupReference.Required; XmlFixDxElements xmlElements = TranslateElements(groupReference.Elements); foreach (object xmlElement in xmlElements.Elements) { xmlReference.Elements.Add(xmlElement); } xmlDictionary.Trailer.Elements.Add(xmlReference); } } }
/// <summary> /// The PopulateMessages method populates the messages in /// an XmlDictionary instance with the message definitions /// from the source dictionary. /// </summary> /// <param name="xmlDictionary"> /// The XmlDictionary instance that the message definitions /// are to be added to. /// </param> /// <param name="fixDictionary"> /// The FixDictionary instance that is the source of the /// elements the XmlDictionary is to be populated with. /// </param> private static void PopulateMessages(XmlDictionary xmlDictionary, FixDictionary fixDictionary) { // REC: Iterate over all of the message definitions in the // source dictionary and convert them to XML serializable // representations for the serializable dictionary: foreach (FixDxMessage dxMessage in fixDictionary.Messages) { XmlFixDxMessage xmlMessage = new XmlFixDxMessage(); xmlMessage.Name = dxMessage.Name; xmlMessage.MsgType = dxMessage.MsgType; xmlMessage.MsgCategory = dxMessage.MsgCategory; XmlFixDxElements xmlElements = TranslateElements(dxMessage.Elements); foreach (object xmlElement in xmlElements.Elements) { xmlMessage.Elements.Add(xmlElement); } xmlDictionary.Messages.Entries.Add(xmlMessage); } }
/// <summary> /// The TranslateElements method converts a collection of /// dictionary elements into their corresponding representation /// as instances of XML serializable classes. The method only /// translates field, group, and block references, since those /// are the only elements that should be found in collections /// of dictionary elements under normal usage. /// </summary> /// <param name="dxElements"> /// The collection of field, group, and block references that /// is to be converted to XML serializable classes. /// </param> /// <returns> /// The resulting collection of XML serializable classes. /// </returns> private static XmlFixDxElements TranslateElements(FixDxCollection dxElements) { XmlFixDxElements result = new XmlFixDxElements(); foreach (IFixDxElement dxElement in dxElements) { if (dxElement is FixDxFieldReference) { FixDxFieldReference dxReference = dxElement as FixDxFieldReference; XmlFixDxFieldReference xmlReference = new XmlFixDxFieldReference(); xmlReference.Name = dxReference.Name; xmlReference.Required = dxReference.Required; result.Elements.Add(xmlReference); } else if (dxElement is FixDxGroupReference) { FixDxGroupReference dxReference = dxElement as FixDxGroupReference; XmlFixDxGroupReference xmlReference = new XmlFixDxGroupReference(); xmlReference.Name = dxReference.Name; xmlReference.Required = dxReference.Required; XmlFixDxElements xmlElements = TranslateElements(dxReference.Elements); foreach (object xmlElement in xmlElements.Elements) { xmlReference.Elements.Add(xmlElement); } result.Elements.Add(xmlReference); } else if (dxElement is FixDxBlockReference) { FixDxBlockReference dxReference = dxElement as FixDxBlockReference; XmlFixDxBlockReference xmlReference = new XmlFixDxBlockReference(); xmlReference.Name = dxReference.Name; xmlReference.Required = dxReference.Required; result.Elements.Add(xmlReference); } } return(result); }
/// <summary> /// The TranslateElements method converts a collection of /// dictionary elements into their corresponding representation /// as instances of XML serializable classes. The method only /// translates field, group, and block references, since those /// are the only elements that should be found in collections /// of dictionary elements under normal usage. /// </summary> /// <param name="dxElements"> /// The collection of field, group, and block references that /// is to be converted to XML serializable classes. /// </param> /// <returns> /// The resulting collection of XML serializable classes. /// </returns> private static XmlFixDxElements TranslateElements(FixDxCollection dxElements) { XmlFixDxElements result = new XmlFixDxElements(); foreach (IFixDxElement dxElement in dxElements) { if (dxElement is FixDxFieldReference) { FixDxFieldReference dxReference = dxElement as FixDxFieldReference; XmlFixDxFieldReference xmlReference = new XmlFixDxFieldReference(); xmlReference.Name = dxReference.Name; xmlReference.Required = dxReference.Required; result.Elements.Add(xmlReference); } else if (dxElement is FixDxGroupReference) { FixDxGroupReference dxReference = dxElement as FixDxGroupReference; XmlFixDxGroupReference xmlReference = new XmlFixDxGroupReference(); xmlReference.Name = dxReference.Name; xmlReference.Required = dxReference.Required; XmlFixDxElements xmlElements = TranslateElements(dxReference.Elements); foreach (object xmlElement in xmlElements.Elements) { xmlReference.Elements.Add(xmlElement); } result.Elements.Add(xmlReference); } else if (dxElement is FixDxBlockReference) { FixDxBlockReference dxReference = dxElement as FixDxBlockReference; XmlFixDxBlockReference xmlReference = new XmlFixDxBlockReference(); xmlReference.Name = dxReference.Name; xmlReference.Required = dxReference.Required; result.Elements.Add(xmlReference); } } return result; }