/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate.option;
import static com.opengamma.masterdb.security.hibernate.Converters.currencyBeanToCurrency;
import static com.opengamma.masterdb.security.hibernate.Converters.expiryBeanToExpiry;
import static com.opengamma.masterdb.security.hibernate.Converters.expiryToExpiryBean;
import org.threeten.bp.ZonedDateTime;
import com.opengamma.financial.security.option.FXBarrierOptionSecurity;
import com.opengamma.masterdb.security.hibernate.AbstractSecurityBeanOperation;
import com.opengamma.masterdb.security.hibernate.Converters;
import com.opengamma.masterdb.security.hibernate.HibernateSecurityMasterDao;
import com.opengamma.masterdb.security.hibernate.OperationContext;
import com.opengamma.util.money.Currency;
import com.opengamma.util.time.Expiry;
/**
* FXBarrierOptionSecurityBeanOperation
*/
public final class FxBarrierOptionSecurityBeanOperation extends AbstractSecurityBeanOperation<FXBarrierOptionSecurity, FXBarrierOptionSecurityBean> {
/**
* Singleton
*/
public static final FxBarrierOptionSecurityBeanOperation INSTANCE = new FxBarrierOptionSecurityBeanOperation();
private FxBarrierOptionSecurityBeanOperation() {
super(FXBarrierOptionSecurity.SECURITY_TYPE, FXBarrierOptionSecurity.class, FXBarrierOptionSecurityBean.class);
}
@Override
public FXBarrierOptionSecurityBean createBean(final OperationContext context, final HibernateSecurityMasterDao secMasterSession, final FXBarrierOptionSecurity security) {
final FXBarrierOptionSecurityBean bean = new FXBarrierOptionSecurityBean();
bean.setCallAmount(security.getCallAmount());
bean.setPutAmount(security.getPutAmount());
bean.setCallCurrency(secMasterSession.getOrCreateCurrencyBean(security.getCallCurrency().getCode()));
bean.setPutCurrency(secMasterSession.getOrCreateCurrencyBean(security.getPutCurrency().getCode()));
bean.setExpiry(expiryToExpiryBean(security.getExpiry()));
bean.setSettlementDate(Converters.dateTimeWithZoneToZonedDateTimeBean(security.getSettlementDate()));
bean.setBarrierType(security.getBarrierType());
bean.setBarrierDirection(security.getBarrierDirection());
bean.setMonitoringType(security.getMonitoringType());
bean.setSamplingFrequency(security.getSamplingFrequency());
bean.setBarrierLevel(security.getBarrierLevel());
bean.setLongShort(security.isLong());
return bean;
}
@Override
public FXBarrierOptionSecurity createSecurity(OperationContext context, FXBarrierOptionSecurityBean bean) {
Currency putCurrency = currencyBeanToCurrency(bean.getPutCurrency());
Currency callCurrency = currencyBeanToCurrency(bean.getCallCurrency());
Expiry expiry = expiryBeanToExpiry(bean.getExpiry());
ZonedDateTime settlementDate = Converters.zonedDateTimeBeanToDateTimeWithZone(bean.getSettlementDate());
FXBarrierOptionSecurity sec = new FXBarrierOptionSecurity(putCurrency,
callCurrency,
bean.getPutAmount(),
bean.getCallAmount(),
expiry,
settlementDate,
bean.getBarrierType(),
bean.getBarrierDirection(),
bean.getMonitoringType(),
bean.getSamplingFrequency(),
bean.getBarrierLevel(),
bean.isLongShort());
return sec;
}
}