/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.expression;
import java.util.ArrayList;
import java.util.List;
/**
* Representation of a sequence of expressions, evaluating to the first that is valid.
*/
/* package */class FirstValidExpression extends UserExpression {
private final List<UserExpression> _exprs;
public FirstValidExpression(final List<UserExpression> exprs) {
_exprs = new ArrayList<UserExpression>(exprs);
}
protected List<UserExpression> getExprs() {
return _exprs;
}
@Override
protected Object evaluate(final Evaluator evaluator) {
for (UserExpression expr : getExprs()) {
final Object exprResult = expr.evaluate(evaluator);
if (exprResult != NA) {
return exprResult;
}
}
return NA;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
for (UserExpression expr : _exprs) {
if (sb.length() != 0) {
sb.append(";\n");
}
sb.append(expr);
}
return sb.toString();
}
}