/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.masterdb.security.hibernate.bond; import com.opengamma.financial.security.FinancialSecurityVisitorAdapter; import com.opengamma.financial.security.bond.CorporateBondSecurity; import com.opengamma.financial.security.bond.GovernmentBondSecurity; import com.opengamma.financial.security.bond.InflationBondSecurity; import com.opengamma.financial.security.bond.MunicipalBondSecurity; import com.opengamma.masterdb.security.hibernate.EnumUserType; /** * Custom Hibernate usertype for the BondType enum */ public class BondTypeUserType extends EnumUserType<BondType> { private static final String CORPORATE_BOND_TYPE = "Corporate"; private static final String GOVERNMENT_BOND_TYPE = "Government"; private static final String MUNICIPAL_BOND_TYPE = "Municipal"; private static final String INFLATION_BOND_TYPE = "Inflation"; public BondTypeUserType() { super(BondType.class, BondType.values()); } @Override protected String enumToStringNoCache(BondType value) { return value.accept(new FinancialSecurityVisitorAdapter<String>() { @Override public String visitCorporateBondSecurity(CorporateBondSecurity bond) { return CORPORATE_BOND_TYPE; } @Override public String visitGovernmentBondSecurity(GovernmentBondSecurity bond) { return GOVERNMENT_BOND_TYPE; } @Override public String visitMunicipalBondSecurity(MunicipalBondSecurity bond) { return MUNICIPAL_BOND_TYPE; } @Override public String visitInflationBondSecurity(InflationBondSecurity bond) { return INFLATION_BOND_TYPE; } }); } }