/**
* 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.FixedInflationSwapLeg;
import com.opengamma.financial.security.swap.FixedInterestRateLeg;
import com.opengamma.financial.security.swap.FixedVarianceSwapLeg;
import com.opengamma.financial.security.swap.FloatingGearingIRLeg;
import com.opengamma.financial.security.swap.FloatingInterestRateLeg;
import com.opengamma.financial.security.swap.FloatingSpreadIRLeg;
import com.opengamma.financial.security.swap.FloatingVarianceSwapLeg;
import com.opengamma.financial.security.swap.InflationIndexSwapLeg;
import com.opengamma.financial.security.swap.SwapLegVisitor;
import com.opengamma.masterdb.security.hibernate.EnumUserType;
/**
* Custom Hibernate usertype for the SwapLegType enum
*/
public class SwapLegTypeUserType extends EnumUserType<SwapLegType> {
private static final String FIXED_INTEREST = "Fixed interest";
private static final String FLOATING_INTEREST = "Floating interest";
private static final String FLOATING_SPREAD_INTEREST = "Floating spread interest";
private static final String FLOATING_GEARING_INTEREST = "Floating gearing interest";
private static final String FIXED_VARIANCE = "Fixed variance";
private static final String FLOATING_VARIANCE = "Floating variance";
private static final String FIXED_INFLATION = "Fixed inflation";
private static final String INFLATION_INDEX = "Inflation index";
public SwapLegTypeUserType() {
super(SwapLegType.class, SwapLegType.values());
}
@Override
protected String enumToStringNoCache(SwapLegType value) {
return value.accept(new SwapLegVisitor<String>() {
@Override
public String visitFixedInterestRateLeg(FixedInterestRateLeg swapLeg) {
return FIXED_INTEREST;
}
@Override
public String visitFloatingInterestRateLeg(FloatingInterestRateLeg swapLeg) {
return FLOATING_INTEREST;
}
@Override
public String visitFloatingSpreadIRLeg(FloatingSpreadIRLeg swapLeg) {
return FLOATING_SPREAD_INTEREST;
}
@Override
public String visitFloatingGearingIRLeg(FloatingGearingIRLeg swapLeg) {
return FLOATING_GEARING_INTEREST;
}
@Override
public String visitFixedVarianceSwapLeg(FixedVarianceSwapLeg swapLeg) {
return FIXED_VARIANCE;
}
@Override
public String visitFloatingVarianceSwapLeg(FloatingVarianceSwapLeg swapLeg) {
return FLOATING_VARIANCE;
}
@Override
public String visitInflationIndexSwapLeg(InflationIndexSwapLeg swapLeg) {
return FIXED_INFLATION;
}
@Override
public String visitFixedInflationSwapLeg(FixedInflationSwapLeg swapLeg) {
return INFLATION_INDEX;
}
});
}
}