Beispiel #1
0
 public void ParseWorks()
 {
     foreach (var identifier in ExpectedOrder)
     {
         Assert.Equal(identifier, ExternalId.Parse(identifier.ToString()));
     }
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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)));
        }
Beispiel #4
0
        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 }));
        }
Beispiel #7
0
 public static FixedIncomeStripWithIdentifier FromFudgeMsg(IFudgeFieldContainer ffc, IFudgeDeserializer deserializer)
 {
     return(new FixedIncomeStripWithIdentifier(ExternalId.Parse(ffc.GetString("identifier")), deserializer.FromField <FixedIncomeStrip>(ffc.GetByName("strip"))));
 }
Beispiel #8
0
 public void WrongNumberOfSeparatorsFails(string uid)
 {
     Assert.Throws <ArgumentException>(() => ExternalId.Parse(uid));
 }