/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.report.framework.expression; import java.util.List; import com.google.common.collect.ImmutableSet; import com.opengamma.strata.basics.currency.CurrencyAmount; import com.opengamma.strata.calc.runner.CalculationFunctions; /** * Evaluates a token against a currency amount. */ public class CurrencyAmountTokenEvaluator extends TokenEvaluator<CurrencyAmount> { private static final String CURRENCY_FIELD = "currency"; private static final String AMOUNT_FIELD = "amount"; @Override public Class<CurrencyAmount> getTargetType() { return CurrencyAmount.class; } @Override public ImmutableSet<String> tokens(CurrencyAmount amount) { return ImmutableSet.of(CURRENCY_FIELD, AMOUNT_FIELD); } @Override public EvaluationResult evaluate( CurrencyAmount amount, CalculationFunctions functions, String firstToken, List<String> remainingTokens) { if (firstToken.equalsIgnoreCase(CURRENCY_FIELD)) { return EvaluationResult.success(amount.getCurrency(), remainingTokens); } if (firstToken.equalsIgnoreCase(AMOUNT_FIELD)) { // Can be rendered directly - retains the currency for formatting purposes return EvaluationResult.success(amount, remainingTokens); } return invalidTokenFailure(amount, firstToken); } }