/**
* 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.swap.CommodityNotional;
import com.opengamma.financial.security.swap.InterestRateNotional;
import com.opengamma.financial.security.swap.NotionalVisitor;
import com.opengamma.financial.security.swap.SecurityNotional;
import com.opengamma.financial.security.swap.VarianceSwapNotional;
import com.opengamma.masterdb.security.hibernate.EnumUserType;
/**
* Custom Hibernate usertype for the NotionalType enum
*/
public class NotionalTypeUserType extends EnumUserType<NotionalType> {
private static final String COMMODITY = "Commodity";
private static final String INTEREST_RATE = "Interest rate";
private static final String SECURITY = "Security";
private static final String VARIANCE = "Variance";
public NotionalTypeUserType() {
super(NotionalType.class, NotionalType.values());
}
@Override
protected String enumToStringNoCache(NotionalType value) {
return value.accept(new NotionalVisitor<String>() {
@Override
public String visitCommodityNotional(CommodityNotional notional) {
return COMMODITY;
}
@Override
public String visitInterestRateNotional(InterestRateNotional notional) {
return INTEREST_RATE;
}
@Override
public String visitSecurityNotional(SecurityNotional notional) {
return SECURITY;
}
@Override
public String visitVarianceSwapNotional(VarianceSwapNotional notional) {
return VARIANCE;
}
});
}
}