public void ParseWorks() { foreach (var identifier in ExpectedOrder) { Assert.Equal(identifier, ExternalId.Parse(identifier.ToString())); } }
public static InterpolatedYieldCurveSpecification FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { var curveDate = ffc.GetValue <DateTimeOffset>("curveDate"); string name = ffc.GetString("name"); var currency = ffc.GetValue <Currency>("currency"); var region = ExternalId.Parse(ffc.GetString("region")); var resolvedStripFields = ffc.GetAllByName("resolvedStrips"); var resolvedStrips = resolvedStripFields.Select(deserializer.FromField <FixedIncomeStripWithIdentifier>) .ToList(); return(new InterpolatedYieldCurveSpecification(curveDate, name, currency, resolvedStrips, region)); }
public override ITrade DeserializeImpl(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { //TODO: the rest of this var uniqueIdentifier = UniqueId.Parse(ffc.GetString("uniqueId")); var tradeDate = ffc.GetValue <DateTimeOffset>("tradeDate"); var securityKey = deserializer.FromField <ExternalIdBundle>(ffc.GetByName("securityKey")); var counterPartyIdentifier = ExternalId.Parse(ffc.GetString("counterpartyKey") ?? ffc.GetString("counterparty")); //NOTE: this is a hack because we don't use proto yet var quant = ffc.GetValue <string>("quantity"); return(new SimpleTrade(uniqueIdentifier, tradeDate, securityKey, new CounterpartyImpl(counterPartyIdentifier), decimal.Parse(quant))); }
public static FixedIncomeStripWithSecurity FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { var originalstrip = deserializer.FromField <FixedIncomeStrip>(ffc.GetByName("strip")); var resolvedTenor = new Tenor(ffc.GetString("resolvedTenor")); DateTimeOffset maturity = GetDateTime(ffc.GetByName("maturity")); ExternalId securityIdentifier = ExternalId.Parse(ffc.GetString("identifier")); var security = deserializer.FromField <ISecurity>(ffc.GetByName("security")); return(new FixedIncomeStripWithSecurity(originalstrip, resolvedTenor, maturity, securityIdentifier, security )); }
public static YieldCurveDefinition FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { Currency currency = null; string name = null; string interpolatorName = null; var strips = new List <FixedIncomeStrip>(); ExternalId region = null; foreach (var fudgeField in ffc) { switch (fudgeField.Name) { case "currency": currency = Currency.Create((string)fudgeField.Value); break; case "name": name = (string)fudgeField.Value; break; case "interpolatorName": interpolatorName = (string)fudgeField.Value; break; case "region": region = ExternalId.Parse((string)fudgeField.Value); break; case "strip": strips.Add(deserializer.FromField <FixedIncomeStrip>(fudgeField)); break; } } var yieldCurveDefinition = new YieldCurveDefinition(currency, name, interpolatorName); yieldCurveDefinition.Region = region; yieldCurveDefinition.AddStrip(strips.ToArray()); return(yieldCurveDefinition); }
public override TMatrix DeserializeImpl(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { string labelsTitle = ffc.GetString("labelsTitle"); string valuesTitle = ffc.GetString("valuesTitle"); var msg = ffc.GetMessage(MatrixField); var labelTypes = new Queue <string>(); var labelValues = new Queue <IFudgeField>(); IList <TKey> keys = new List <TKey>(); IList <object> labels = new List <object>(); IList <double> values = new List <double>(); foreach (IFudgeField field in msg) { switch (field.Ordinal) { case LabelTypeOrdinal: labelTypes.Enqueue((string)field.Value); break; case KeyOrdinal: TKey key = GetKey(field); keys.Add(key); break; case LabelOrdinal: labelValues.Enqueue(field); break; case ValueOrdinal: values.Add((double)field.Value); break; } if (labelTypes.Count != 0 && labelValues.Count != 0) { // Have a type and a value, which can be consumed string labelTypeName = labelTypes.Dequeue(); IFudgeField labelValue = labelValues.Dequeue(); switch (labelTypeName) { case "java.lang.String": var value = (string)labelValue.Value; labels.Add(value); break; case "com.opengamma.util.time.Tenor": //TODO DOTNET-14 this is serialized as a string here string period = (string)labelValue.Value; labels.Add(new Tenor(period)); break; case "com.opengamma.util.money.Currency": string iso = (string)labelValue.Value; labels.Add(Currency.Create(iso)); break; case "com.opengamma.id.ExternalId": string str = (string)labelValue.Value; labels.Add(ExternalId.Parse(str)); break; default: //TODO work out whether this is right (and fast enough) in the general case var typeMapper = (IFudgeTypeMappingStrategy) Context.GetProperty(ContextProperties.TypeMappingStrategyProperty); Type labelType = typeMapper.GetType(labelTypeName); object label = deserializer.FromField(labelValue, labelType); labels.Add(label); break; } } } var constructorInfo = typeof(TMatrix).GetConstructor(new[] { typeof(IList <TKey>), typeof(IList <object>), //TODO type up this (if the java side does) typeof(IList <double>), typeof(string), typeof(string), }); return((TMatrix)constructorInfo.Invoke(new object[] { keys, labels, values, labelsTitle, valuesTitle })); }
public static FixedIncomeStripWithIdentifier FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer) { return(new FixedIncomeStripWithIdentifier(ExternalId.Parse(ffc.GetString("identifier")), deserializer.FromField <FixedIncomeStrip>(ffc.GetByName("strip")))); }
public void WrongNumberOfSeparatorsFails(string uid) { Assert.Throws <ArgumentException>(() => ExternalId.Parse(uid)); }