//------------------------------------------------------------------------- /// <summary> /// Parses the FpML document extracting the trades. /// <para> /// This parses the specified FpML root element, using the map of references. /// The FpML specification uses references to link one part of the XML to another. /// For example, if one part of the XML has {@code <foo id="fooId">}, the references /// map will contain an entry mapping "fooId" to the parsed element {@code <foo>}. /// /// </para> /// </summary> /// <param name="fpmlRootEl"> the source of the FpML XML document </param> /// <param name="references"> the map of id/href to referenced element </param> /// <returns> the parsed trades </returns> /// <exception cref="RuntimeException"> if a parse error occurred </exception> public IList <Trade> parseTrades(XmlElement fpmlRootEl, IDictionary <string, XmlElement> references) { FpmlDocument document = new FpmlDocument(fpmlRootEl, references, ourPartySelector, tradeInfoParser, refData); IList <XmlElement> tradeEls = document.FpmlRoot.getChildren("trade"); ImmutableList.Builder <Trade> builder = ImmutableList.builder(); foreach (XmlElement tradeEl in tradeEls) { builder.add(parseTrade(document, tradeEl)); } return(builder.build()); }
// parses one trade element private Trade parseTrade(FpmlDocument document, XmlElement tradeEl) { // find which trade type it is by comparing children to known parsers foreach (KeyValuePair <string, FpmlParserPlugin> entry in tradeParsers.SetOfKeyValuePairs()) { Optional <XmlElement> productOptEl = tradeEl.findChild(entry.Key); if (productOptEl.Present) { return(entry.Value.parseTrade(document, tradeEl)); } } // failed to find a known trade type //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: //JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter: ImmutableSet <string> childNames = tradeEl.Children.Select(XmlElement::getName).collect(toImmutableSet()); throw new FpmlParseException("Unknown product type: " + childNames); }