Beispiel #1
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() + "'");
            }
        }
Beispiel #2
0
        // find the result starting from a measure
        private EvaluationResult evaluateMeasures(ResultsRow resultsRow, CalculationFunctions functions, IList <string> remainingTokens)
        {
            // if no measures, return list of valid measures
            if (remainingTokens.Count == 0 || Strings.nullToEmpty(remainingTokens[0]).Trim().Empty)
            {
                IList <string> measureNames = ResultsRow.measureNames(resultsRow.Target, functions);
                return(EvaluationResult.failure("No measure specified. Use one of: {}", measureNames));
            }
            // evaluate the measure name
            string measureToken = remainingTokens[0];

            return(EvaluationResult.of(resultsRow.getResult(measureToken), remainingTokens.subList(1, remainingTokens.Count)));
        }