/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.security.summary;
import java.util.HashMap;
import java.util.Map;
import com.opengamma.core.security.Security;
import com.opengamma.core.security.SecuritySource;
/**
* Repository of summary factories.
*/
public class SummaryProvider {
private final Map<String, SummaryFactory<?>> _factoriesBySecurityType = new HashMap<String, SummaryFactory<?>>();
public SummaryProvider(SecuritySource securitySource) {
register(new BondSummaryFactory());
register(new CapFloorCMSSpreadSummaryFactory());
register(new CapFloorSummaryFactory());
register(new EquityBarrierOptionSummaryFactory());
register(new EquityIndexOptionSummaryFactory());
register(new EquityOptionSummaryFactory(securitySource));
register(new EquitySummaryFactory());
register(new EquityVarianceSwapSummaryFactory());
register(new FRASummaryFactory());
register(new FutureSummaryFactory());
register(new FXBarrierOptionSummaryFactory());
register(new FXForwardSummaryFactory(securitySource));
register(new FXOptionSummaryFactory());
register(new IRFutureOptionSummaryFactory());
register(new NonDeliverableFXOptionSummaryFactory());
register(new SwapSummaryFactory());
register(new SwaptionSummaryFactory(securitySource));
}
private void register(SummaryFactory<?> summaryFactory) {
_factoriesBySecurityType.put(summaryFactory.getSecurityType(), summaryFactory);
}
//-------------------------------------------------------------------------
@SuppressWarnings("unchecked")
public Summary getSummary(Security security) {
SummaryFactory<Security> factory = (SummaryFactory<Security>) _factoriesBySecurityType.get(security.getSecurityType());
if (factory == null) {
return null;
}
return factory.getSummary(security);
}
}