/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.calc.runner;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import com.opengamma.strata.basics.CalculationTarget;
import com.opengamma.strata.basics.ReferenceData;
import com.opengamma.strata.basics.currency.Currency;
import com.opengamma.strata.calc.Measure;
import com.opengamma.strata.collect.Messages;
import com.opengamma.strata.collect.result.Result;
import com.opengamma.strata.data.scenario.ScenarioMarketData;
/**
* Function used when there is no function registered that can calculate a requested value.
*/
final class MissingConfigCalculationFunction
implements CalculationFunction<CalculationTarget> {
/**
* Shared instance.
*/
static final CalculationFunction<CalculationTarget> INSTANCE = new MissingConfigCalculationFunction();
// restricted constructor
private MissingConfigCalculationFunction() {
}
//-------------------------------------------------------------------------
@Override
public Class<CalculationTarget> targetType() {
return CalculationTarget.class;
}
@Override
public Set<Measure> supportedMeasures() {
return ImmutableSet.of();
}
@Override
public Currency naturalCurrency(CalculationTarget trade, ReferenceData refData) {
throw new IllegalStateException("Function has no currency-convertible measures");
}
@Override
public FunctionRequirements requirements(
CalculationTarget target,
Set<Measure> measures,
CalculationParameters parameters,
ReferenceData refData) {
return FunctionRequirements.empty();
}
@Override
public Map<Measure, Result<?>> calculate(
CalculationTarget target,
Set<Measure> measures,
CalculationParameters parameters,
ScenarioMarketData marketData,
ReferenceData refData) {
throw new IllegalStateException(Messages.format(
"No function configured for measures {} on '{}'", measures, target.getClass().getSimpleName()));
}
}