/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.masterdb.security.hibernate.equity; import static com.opengamma.masterdb.security.hibernate.Converters.currencyBeanToCurrency; import com.opengamma.financial.security.equity.EquitySecurity; import com.opengamma.financial.security.equity.GICSCode; import com.opengamma.masterdb.security.hibernate.AbstractSecurityBeanOperation; import com.opengamma.masterdb.security.hibernate.CurrencyBean; import com.opengamma.masterdb.security.hibernate.ExchangeBean; import com.opengamma.masterdb.security.hibernate.HibernateSecurityMasterDao; import com.opengamma.masterdb.security.hibernate.OperationContext; /** * A Hibernate helper. */ public final class EquitySecurityBeanOperation extends AbstractSecurityBeanOperation<EquitySecurity, EquitySecurityBean> { /** * Singleton. */ public static final EquitySecurityBeanOperation INSTANCE = new EquitySecurityBeanOperation(); private EquitySecurityBeanOperation() { super(EquitySecurity.SECURITY_TYPE, EquitySecurity.class, EquitySecurityBean.class); } public static GICSCode gicsCodeBeanToGICSCode(final GICSCodeBean gicsCodeBean) { if (gicsCodeBean == null) { return null; } return GICSCode.of(gicsCodeBean.getName()); } @Override public EquitySecurityBean createBean(final OperationContext context, final HibernateSecurityMasterDao secMasterSession, final EquitySecurity security) { GICSCodeBean gicsCodeBean = null; if (security.getGicsCode() != null) { gicsCodeBean = secMasterSession.getOrCreateGICSCodeBean(security.getGicsCode().getCode(), ""); } final EquitySecurityBean bean = createBean( secMasterSession.getOrCreateExchangeBean(security.getExchangeCode(), security.getExchange()), security.getCompanyName(), secMasterSession.getOrCreateCurrencyBean(security.getCurrency().getCode()), gicsCodeBean, security.isPreferred()); bean.setShortName(security.getShortName()); return bean; } public EquitySecurityBean createBean( final ExchangeBean exchange, final String companyName, final CurrencyBean currency, final GICSCodeBean gicsCode, boolean preferred) { final EquitySecurityBean equity = new EquitySecurityBean(); equity.setExchange(exchange); equity.setCompanyName(companyName); equity.setCurrency(currency); equity.setGicsCode(gicsCode); equity.setPreferred(preferred); return equity; } @Override public EquitySecurity createSecurity(final OperationContext context, final EquitySecurityBean bean) { final EquitySecurity security = new EquitySecurity(bean.getExchange().getDescription(), bean.getExchange().getName(), bean.getCompanyName(), currencyBeanToCurrency(bean.getCurrency())); security.setShortName(bean.getShortName()); security.setGicsCode(gicsCodeBeanToGICSCode(bean.getGicsCode())); security.setPreferred(bean.isPreferred()); return security; } }