/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate.cashflow;
import static com.opengamma.masterdb.security.hibernate.Converters.currencyBeanToCurrency;
import static com.opengamma.masterdb.security.hibernate.Converters.dateTimeWithZoneToZonedDateTimeBean;
import static com.opengamma.masterdb.security.hibernate.Converters.zonedDateTimeBeanToDateTimeWithZone;
import com.opengamma.financial.security.cashflow.CashFlowSecurity;
import com.opengamma.masterdb.security.hibernate.AbstractSecurityBeanOperation;
import com.opengamma.masterdb.security.hibernate.CurrencyBean;
import com.opengamma.masterdb.security.hibernate.HibernateSecurityMasterDao;
import com.opengamma.masterdb.security.hibernate.OperationContext;
import com.opengamma.masterdb.security.hibernate.ZonedDateTimeBean;
/**
* Bean/security conversion operations.
*/
public final class CashFlowSecurityBeanOperation extends AbstractSecurityBeanOperation<CashFlowSecurity, CashFlowSecurityBean> {
/**
* Singleton instance.
*/
public static final CashFlowSecurityBeanOperation INSTANCE = new CashFlowSecurityBeanOperation();
private CashFlowSecurityBeanOperation() {
super(CashFlowSecurity.SECURITY_TYPE, CashFlowSecurity.class, CashFlowSecurityBean.class);
}
@Override
public CashFlowSecurityBean createBean(final OperationContext context, HibernateSecurityMasterDao secMasterSession, CashFlowSecurity security) {
CurrencyBean currencyBean = secMasterSession.getOrCreateCurrencyBean(security.getCurrency().getCode());
ZonedDateTimeBean settlementBean = dateTimeWithZoneToZonedDateTimeBean(security.getSettlement());
final CashFlowSecurityBean bean = new CashFlowSecurityBean();
bean.setCurrency(currencyBean);
bean.setSettlement(settlementBean);
bean.setAmount(security.getAmount());
return bean;
}
@Override
public CashFlowSecurity createSecurity(final OperationContext context, CashFlowSecurityBean bean) {
return new CashFlowSecurity(currencyBeanToCurrency(bean.getCurrency()),
zonedDateTimeBeanToDateTimeWithZone(bean.getSettlement()),
bean.getAmount());
}
}