/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security.hibernate.option;
import com.opengamma.financial.security.option.AssetOrNothingPayoffStyle;
import com.opengamma.financial.security.option.AsymmetricPoweredPayoffStyle;
import com.opengamma.financial.security.option.BarrierPayoffStyle;
import com.opengamma.financial.security.option.CappedPoweredPayoffStyle;
import com.opengamma.financial.security.option.CashOrNothingPayoffStyle;
import com.opengamma.financial.security.option.ExtremeSpreadPayoffStyle;
import com.opengamma.financial.security.option.FadeInPayoffStyle;
import com.opengamma.financial.security.option.FixedStrikeLookbackPayoffStyle;
import com.opengamma.financial.security.option.FloatingStrikeLookbackPayoffStyle;
import com.opengamma.financial.security.option.GapPayoffStyle;
import com.opengamma.financial.security.option.PayoffStyleVisitor;
import com.opengamma.financial.security.option.PoweredPayoffStyle;
import com.opengamma.financial.security.option.SimpleChooserPayoffStyle;
import com.opengamma.financial.security.option.SupersharePayoffStyle;
import com.opengamma.financial.security.option.VanillaPayoffStyle;
import com.opengamma.masterdb.security.hibernate.EnumUserType;
/**
* Custom Hibernate usertype for the OptionPayoffStyle enum
*/
public class OptionPayoffStyleUserType extends EnumUserType<OptionPayoffStyle> {
private static final String ASSET_OR_NOTHING = "Asset-or-Nothing";
private static final String ASYMMETRIC_POWERED = "Asymmetric Powered";
private static final String BARRIER = "Barrier";
private static final String CAPPED_POWERED = "Capped Powered";
private static final String CASH_OR_NOTHING = "Cash-or-Nothing";
private static final String EXTREME_SPREAD = "Extreme Spread";
private static final String FADE_IN = "Fade-In";
private static final String FIXED_STRIKE_LOOKBACK = "Fixed-Strike Lookback";
private static final String FLOATING_STRIKE_LOOKBACK = "Floating-Strike Lookback";
private static final String GAP = "Gap";
private static final String POWERED = "Powered";
private static final String SIMPLE_CHOOSER = "Simple Chooser";
private static final String SUPERSHARE = "Supershare";
private static final String VANILLA = "Vanilla";
public OptionPayoffStyleUserType() {
super(OptionPayoffStyle.class, OptionPayoffStyle.values());
}
@Override
protected String enumToStringNoCache(final OptionPayoffStyle value) {
return value.accept(new PayoffStyleVisitor<String>() {
@Override
public String visitAssetOrNothingPayoffStyle(final AssetOrNothingPayoffStyle payoffStyle) {
return ASSET_OR_NOTHING;
}
@Override
public String visitAsymmetricPoweredPayoffStyle(final AsymmetricPoweredPayoffStyle payoffStyle) {
return ASYMMETRIC_POWERED;
}
@Override
public String visitBarrierPayoffStyle(final BarrierPayoffStyle payoffStyle) {
return BARRIER;
}
@Override
public String visitCappedPoweredPayoffStyle(final CappedPoweredPayoffStyle payoffStyle) {
return CAPPED_POWERED;
}
@Override
public String visitCashOrNothingPayoffStyle(final CashOrNothingPayoffStyle payoffStyle) {
return CASH_OR_NOTHING;
}
@Override
public String visitExtremeSpreadPayoffStyle(final ExtremeSpreadPayoffStyle payoffStyle) {
return EXTREME_SPREAD;
}
@Override
public String visitFadeInPayoffStyle(final FadeInPayoffStyle payoffStyle) {
return FADE_IN;
}
@Override
public String visitFixedStrikeLookbackPayoffStyle(final FixedStrikeLookbackPayoffStyle payoffStyle) {
return FIXED_STRIKE_LOOKBACK;
}
@Override
public String visitFloatingStrikeLookbackPayoffStyle(final FloatingStrikeLookbackPayoffStyle payoffStyle) {
return FLOATING_STRIKE_LOOKBACK;
}
@Override
public String visitGapPayoffStyle(final GapPayoffStyle payoffStyle) {
return GAP;
}
@Override
public String visitPoweredPayoffStyle(final PoweredPayoffStyle payoffStyle) {
return POWERED;
}
@Override
public String visitSimpleChooserPayoffStyle(final SimpleChooserPayoffStyle payoffStyle) {
return SIMPLE_CHOOSER;
}
@Override
public String visitSupersharePayoffStyle(final SupersharePayoffStyle payoffStyle) {
return SUPERSHARE;
}
@Override
public String visitVanillaPayoffStyle(final VanillaPayoffStyle payoffStyle) {
return VANILLA;
}
});
}
}