public override EvaluationResult evaluate(Security security, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
            MetaBean metaBean = MetaBean.of(security.GetType());

            // security
            Optional <string> securityPropertyName = metaBean.metaPropertyMap().Keys.Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (securityPropertyName.Present)
            {
                object propertyValue = metaBean.metaProperty(securityPropertyName.get()).get((Bean)security);
                return(propertyValue != null?EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken));
            }

            // security info
            Optional <string> securityInfoPropertyName = security.Info.propertyNames().Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (securityInfoPropertyName.Present)
            {
                object propertyValue = security.Info.property(securityInfoPropertyName.get()).get();
                return(propertyValue != null?EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken));
            }

            // security price info
            Optional <string> securityPriceInfoPropertyName = security.Info.PriceInfo.propertyNames().Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (securityPriceInfoPropertyName.Present)
            {
                object propertyValue = security.Info.PriceInfo.property(securityPriceInfoPropertyName.get()).get();
                return(propertyValue != null?EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken));
            }

            // not found
            return(invalidTokenFailure(security, firstToken));
        }
        public override EvaluationResult evaluate <T1>(IEnumerable <T1> iterable, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
            string token = firstToken.ToLower(Locale.ENGLISH);
            int?   index = Ints.tryParse(token);

            if (index != null)
            {
                try
                {
                    return(EvaluationResult.success(Iterables.get(iterable, index), remainingTokens));
                }
                catch (System.IndexOutOfRangeException)
                {
                    return(invalidTokenFailure(iterable, token));
                }
            }
            ISet <string> tokens = this.tokens(iterable);

            foreach (object item in iterable)
            {
                if (!fieldValues(item).Contains(token))
                {
                    continue;
                }
                if (!tokens.Contains(token))
                {
                    return(ambiguousTokenFailure(iterable, token));
                }
                return(EvaluationResult.success(item, remainingTokens));
            }
            return(invalidTokenFailure(iterable, token));
        }
Ejemplo n.º 3
0
        public override EvaluationResult evaluate(ResultsRow resultsRow, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
            ValueRootType rootType = ValueRootType.parseToken(firstToken);

            switch (rootType.innerEnumValue)
            {
            case com.opengamma.strata.report.framework.expression.ValueRootType.InnerEnum.MEASURES:
                return(evaluateMeasures(resultsRow, functions, remainingTokens));

            case com.opengamma.strata.report.framework.expression.ValueRootType.InnerEnum.PRODUCT:
                return(EvaluationResult.of(resultsRow.Product, remainingTokens));

            case com.opengamma.strata.report.framework.expression.ValueRootType.InnerEnum.SECURITY:
                return(EvaluationResult.of(resultsRow.Security, remainingTokens));

            case com.opengamma.strata.report.framework.expression.ValueRootType.InnerEnum.TRADE:
                return(EvaluationResult.of(resultsRow.Trade, remainingTokens));

            case com.opengamma.strata.report.framework.expression.ValueRootType.InnerEnum.POSITION:
                return(EvaluationResult.of(resultsRow.Position, remainingTokens));

            case com.opengamma.strata.report.framework.expression.ValueRootType.InnerEnum.TARGET:
                return(EvaluationResult.success(resultsRow.Target, remainingTokens));

            default:
                throw new System.ArgumentException("Unknown root token '" + rootType.token() + "'");
            }
        }
Ejemplo n.º 4
0
        public override EvaluationResult evaluate(Trade trade, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
            MetaBean metaBean = MetaBean.of(trade.GetType());

            // trade
            Optional <string> tradePropertyName = metaBean.metaPropertyMap().Keys.Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (tradePropertyName.Present)
            {
                object propertyValue = metaBean.metaProperty(tradePropertyName.get()).get((Bean)trade);
                if (propertyValue == null)
                {
                    return(EvaluationResult.failure("Property '{}' not set", firstToken));
                }
                return(EvaluationResult.success(propertyValue, remainingTokens));
            }

            // trade info
            Optional <string> tradeInfoPropertyName = trade.Info.propertyNames().Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (tradeInfoPropertyName.Present)
            {
                object propertyValue = trade.Info.property(tradeInfoPropertyName.get()).get();
                if (propertyValue == null)
                {
                    return(EvaluationResult.failure("Property '{}' not set", firstToken));
                }
                return(EvaluationResult.success(propertyValue, remainingTokens));
            }
            return(invalidTokenFailure(trade, firstToken));
        }
        public override EvaluationResult evaluate(Position position, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
            MetaBean metaBean = MetaBean.of(position.GetType());

            // position
            Optional <string> positionPropertyName = metaBean.metaPropertyMap().Keys.Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (positionPropertyName.Present)
            {
                object propertyValue = metaBean.metaProperty(positionPropertyName.get()).get((Bean)position);
                return(propertyValue != null?EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken));
            }

            // position info
            Optional <string> positionInfoPropertyName = position.Info.propertyNames().Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (positionInfoPropertyName.Present)
            {
                object propertyValue = position.Info.property(positionInfoPropertyName.get()).get();
                return(propertyValue != null?EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("Property '{}' not set", firstToken));
            }

            // not found
            return(invalidTokenFailure(position, firstToken));
        }
Ejemplo n.º 6
0
 public override EvaluationResult evaluate(CurrencyParameterSensitivity sensitivity, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
 {
     if (firstToken.Equals(sensitivity.Currency.Code, StringComparison.OrdinalIgnoreCase) || firstToken.Equals(sensitivity.MarketDataName.Name, StringComparison.OrdinalIgnoreCase))
     {
         return(EvaluationResult.success(sensitivity, remainingTokens));
     }
     else
     {
         return(invalidTokenFailure(sensitivity, firstToken));
     }
 }
Ejemplo n.º 7
0
 public override EvaluationResult evaluate(CurrencyAmount amount, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
 {
     if (firstToken.Equals(CURRENCY_FIELD, StringComparison.OrdinalIgnoreCase))
     {
         return(EvaluationResult.success(amount.Currency, remainingTokens));
     }
     if (firstToken.Equals(AMOUNT_FIELD, StringComparison.OrdinalIgnoreCase))
     {
         // Can be rendered directly - retains the currency for formatting purposes
         return(EvaluationResult.success(amount, remainingTokens));
     }
     return(invalidTokenFailure(amount, firstToken));
 }
        public override EvaluationResult evaluate(CurrencyParameterSensitivities sensitivities, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
            IList <CurrencyParameterSensitivity> matchingSensitivities = sensitivities.Sensitivities.Where(sensitivity => matchesToken(sensitivity, firstToken)).collect(toImmutableList());

            switch (matchingSensitivities.Count)
            {
            case 0:
                return(invalidTokenFailure(sensitivities, firstToken));

            case 1:
                return(EvaluationResult.success(matchingSensitivities[0], remainingTokens));

            default:
                return(EvaluationResult.success(CurrencyParameterSensitivities.of(matchingSensitivities), remainingTokens));
            }
        }
Ejemplo n.º 9
0
        public override EvaluationResult evaluate(Bean bean, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
        {
            Optional <string> propertyName = bean.propertyNames().Where(p => p.equalsIgnoreCase(firstToken)).First();

            if (propertyName.Present)
            {
                object propertyValue = bean.property(propertyName.get()).get();

                return(propertyValue != null?EvaluationResult.success(propertyValue, remainingTokens) : EvaluationResult.failure("No value available for property '{}'", firstToken));
            }
            // The bean has a single property which doesn't match the token.
            // Return the property value without consuming any tokens.
            // This allows skipping over properties when the bean only has a single property.
            if (bean.propertyNames().size() == 1)
            {
                string         singlePropertyName = Iterables.getOnlyElement(bean.propertyNames());
                object         propertyValue      = bean.property(singlePropertyName).get();
                IList <string> tokens             = ImmutableList.builder <string>().add(firstToken).addAll(remainingTokens).build();

                return(propertyValue != null?EvaluationResult.success(propertyValue, tokens) : EvaluationResult.failure("No value available for property '{}'", firstToken));
            }
            return(invalidTokenFailure(bean, firstToken));
        }
 public override EvaluationResult evaluate <T1>(IDictionary <T1> map, CalculationFunctions functions, string firstToken, IList <string> remainingTokens)
 {
     return(MapStream.of(map).filterKeys(key => firstToken.Equals(key.ToString(), StringComparison.OrdinalIgnoreCase)).findFirst().map(e => EvaluationResult.success(e.Value, remainingTokens)).orElse(invalidTokenFailure(map, firstToken)));
 }