/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.provider.calculator.issuer; import com.opengamma.analytics.financial.interestrate.InstrumentDerivativeVisitorAdapter; import com.opengamma.analytics.financial.interestrate.bond.definition.BillSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BillTransaction; import com.opengamma.analytics.financial.interestrate.bond.definition.BondFixedSecurity; import com.opengamma.analytics.financial.interestrate.bond.definition.BondFixedTransaction; import com.opengamma.analytics.financial.interestrate.bond.provider.BillSecurityDiscountingMethod; import com.opengamma.analytics.financial.interestrate.bond.provider.BondSecurityDiscountingMethod; import com.opengamma.analytics.financial.provider.description.interestrate.IssuerProviderInterface; import com.opengamma.util.ArgumentChecker; /** * Calculate bond yield from curves. */ public final class YieldFromCurvesCalculator extends InstrumentDerivativeVisitorAdapter<IssuerProviderInterface, Double> { /** * The calculator instance. */ private static final YieldFromCurvesCalculator s_instance = new YieldFromCurvesCalculator(); /** * Return the calculator instance. * @return The instance. */ public static YieldFromCurvesCalculator getInstance() { return s_instance; } /** * Private constructor. */ private YieldFromCurvesCalculator() { } /** The method used for bills */ private static final BillSecurityDiscountingMethod METHOD_BILL_SECURITY = BillSecurityDiscountingMethod.getInstance(); /** The method used for bonds */ private static final BondSecurityDiscountingMethod METHOD_BOND_SECURITY = BondSecurityDiscountingMethod.getInstance(); @Override public Double visitBillSecurity(final BillSecurity bill, final IssuerProviderInterface issuer) { ArgumentChecker.notNull(bill, "Bill"); ArgumentChecker.notNull(issuer, "Issuer provider"); return METHOD_BILL_SECURITY.yieldFromCurves(bill, issuer); } @Override public Double visitBillTransaction(final BillTransaction bill, final IssuerProviderInterface issuer) { ArgumentChecker.notNull(bill, "Bill"); ArgumentChecker.notNull(issuer, "Issuer provider"); return METHOD_BILL_SECURITY.yieldFromCurves(bill.getBillStandard(), issuer); } @Override public Double visitBondFixedSecurity(final BondFixedSecurity bond, final IssuerProviderInterface issuer) { ArgumentChecker.notNull(bond, "bond"); ArgumentChecker.notNull(issuer, "Issuer provider"); return METHOD_BOND_SECURITY.yieldFromCurves(bond, issuer); } @Override public Double visitBondFixedTransaction(final BondFixedTransaction bond, final IssuerProviderInterface issuer) { ArgumentChecker.notNull(bond, "bond"); ArgumentChecker.notNull(issuer, "Issuer provider"); return METHOD_BOND_SECURITY.yieldFromCurves(bond.getBondStandard(), issuer); } }