/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.future;
import com.opengamma.financial.security.FinancialSecurityVisitorAdapter;
import com.opengamma.financial.security.future.AgricultureFutureSecurity;
import com.opengamma.financial.security.future.BondFutureSecurity;
import com.opengamma.financial.security.future.DeliverableSwapFutureSecurity;
import com.opengamma.financial.security.future.EnergyFutureSecurity;
import com.opengamma.financial.security.future.EquityFutureSecurity;
import com.opengamma.financial.security.future.EquityIndexDividendFutureSecurity;
import com.opengamma.financial.security.future.FXFutureSecurity;
import com.opengamma.financial.security.future.FederalFundsFutureSecurity;
import com.opengamma.financial.security.future.IndexFutureSecurity;
import com.opengamma.financial.security.future.InterestRateFutureSecurity;
import com.opengamma.financial.security.future.MetalFutureSecurity;
import com.opengamma.financial.security.future.StockFutureSecurity;
import com.opengamma.financial.security.option.BondFutureOptionSecurity;
import com.opengamma.financial.security.option.CommodityFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexDividendFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexFutureOptionSecurity;
import com.opengamma.financial.security.option.FxFutureOptionSecurity;
import com.opengamma.financial.security.option.IRFutureOptionSecurity;
/**
* If a FinancialSecurity has a pointValue, or unitNotional, attached to the contract,
* this visitor will provide it.
*/
public class PointValueVisitor extends FinancialSecurityVisitorAdapter<Double> {
private static final PointValueVisitor INSTANCE = new PointValueVisitor();
public static final PointValueVisitor getInstance() {
return INSTANCE;
}
@Override
public Double visitInterestRateFutureSecurity(final InterestRateFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitBondFutureSecurity(final BondFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitEnergyFutureSecurity(final EnergyFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitEquityFutureSecurity(final EquityFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitEquityIndexDividendFutureSecurity(final EquityIndexDividendFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitFXFutureSecurity(final FXFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitIndexFutureSecurity(final IndexFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitMetalFutureSecurity(final MetalFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitStockFutureSecurity(final StockFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitAgricultureFutureSecurity(final AgricultureFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitDeliverableSwapFutureSecurity(final DeliverableSwapFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitFederalFundsFutureSecurity(final FederalFundsFutureSecurity security) {
return security.getUnitAmount();
}
@Override
public Double visitIRFutureOptionSecurity(final IRFutureOptionSecurity security) {
return security.getPointValue();
}
@Override
public Double visitCommodityFutureOptionSecurity(final CommodityFutureOptionSecurity security) {
return security.getPointValue();
}
@Override
public Double visitEquityIndexFutureOptionSecurity(final EquityIndexFutureOptionSecurity security) {
return security.getPointValue();
}
@Override
public Double visitEquityIndexDividendFutureOptionSecurity(final EquityIndexDividendFutureOptionSecurity security) {
return security.getPointValue();
}
@Override
public Double visitFxFutureOptionSecurity(final FxFutureOptionSecurity security) {
return security.getPointValue();
}
@Override
public Double visitBondFutureOptionSecurity(final BondFutureOptionSecurity security) {
return security.getPointValue();
}
}