/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate.index;
import static com.opengamma.masterdb.security.hibernate.Converters.externalIdBeanToExternalId;
import static com.opengamma.masterdb.security.hibernate.Converters.externalIdToExternalIdBean;
import static com.opengamma.masterdb.security.hibernate.Converters.tenorBeanToTenor;
import com.opengamma.financial.security.index.IborIndex;
import com.opengamma.id.ExternalId;
import com.opengamma.masterdb.security.hibernate.AbstractSecurityBeanOperation;
import com.opengamma.masterdb.security.hibernate.HibernateSecurityMasterDao;
import com.opengamma.masterdb.security.hibernate.OperationContext;
import com.opengamma.util.time.Tenor;
/**
* Hibernate bean/security conversion operations.
*/
public final class IborIndexBeanOperation extends AbstractSecurityBeanOperation<IborIndex, IborIndexBean> {
/**
* Singleton instance.
*/
public static final IborIndexBeanOperation INSTANCE = new IborIndexBeanOperation();
private IborIndexBeanOperation() {
super(IborIndex.INDEX_TYPE, IborIndex.class, IborIndexBean.class);
}
@Override
public IborIndexBean createBean(final OperationContext context, HibernateSecurityMasterDao secMasterSession, IborIndex index) {
final IborIndexBean bean = new IborIndexBean();
bean.setDescription(index.getDescription());
bean.setConventionId(externalIdToExternalIdBean(index.getConventionId()));
bean.setTenor(secMasterSession.getOrCreateTenorBean(index.getTenor().toFormattedString()));
if (index.getIndexFamilyId() != null) {
bean.setIndexFamilyId(externalIdToExternalIdBean(index.getIndexFamilyId()));
}
return bean;
}
@Override
public IborIndex createSecurity(final OperationContext context, IborIndexBean bean) {
String description = bean.getDescription();
Tenor tenor = tenorBeanToTenor(bean.getTenor());
ExternalId conventionId = externalIdBeanToExternalId(bean.getConventionId());
IborIndex iborIndex = new IborIndex("", description, tenor, conventionId);
if (bean.getIndexFamilyId() != null) {
ExternalId indexFamilyId = externalIdBeanToExternalId(bean.getIndexFamilyId());
iborIndex.setIndexFamilyId(indexFamilyId);
}
return iborIndex;
}
}