/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate.swap;
import com.opengamma.financial.security.FinancialSecurityVisitorAdapter;
import com.opengamma.financial.security.swap.ForwardSwapSecurity;
import com.opengamma.financial.security.swap.SwapSecurity;
import com.opengamma.financial.security.swap.YearOnYearInflationSwapSecurity;
import com.opengamma.financial.security.swap.ZeroCouponInflationSwapSecurity;
import com.opengamma.masterdb.security.hibernate.EnumUserType;
/**
* Custom Hibernate usertype for the SwapType enum
*/
public class SwapTypeUserType extends EnumUserType<SwapType> {
private static final String FORWARD_SWAP_TYPE = "Forward";
private static final String SWAP_TYPE = "Swap";
private static final String ZERO_COUPON_INFLATION_SWAP = "Zero Coupon Inflation";
private static final String YEAR_ON_YEAR_INFLATION_SWAP = "Year on Year Inflation";
public SwapTypeUserType() {
super(SwapType.class, SwapType.values());
}
@Override
protected String enumToStringNoCache(SwapType value) {
return value.accept(new FinancialSecurityVisitorAdapter<String>() {
@Override
public String visitForwardSwapSecurity(ForwardSwapSecurity security) {
return FORWARD_SWAP_TYPE;
}
@Override
public String visitSwapSecurity(SwapSecurity security) {
return SWAP_TYPE;
}
@Override
public String visitZeroCouponInflationSwapSecurity(ZeroCouponInflationSwapSecurity security) {
return ZERO_COUPON_INFLATION_SWAP;
}
@Override
public String visitYearOnYearInflationSwapSecurity(YearOnYearInflationSwapSecurity security) {
return YEAR_ON_YEAR_INFLATION_SWAP;
}
});
}
}