package org.marketcetera.core.instruments;
import java.util.EnumSet;
import java.util.Set;
import org.marketcetera.quickfix.FIXVersion;
import org.marketcetera.trade.ConvertibleBond;
import org.marketcetera.trade.Instrument;
import quickfix.DataDictionary;
import quickfix.Message;
import quickfix.field.Symbol;
/* $License$ */
/**
* Prepares FIX messages with the fields necessary for <code>ConvertibleBond</code> instruments.
*
* @version $Id: ConvertibleBondToMessage.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
public class ConvertibleBondToMessage
extends InstrumentToMessage<ConvertibleBond>
{
/**
* Create a new ConvertibleBondToMessage instance.
*/
public ConvertibleBondToMessage()
{
super(ConvertibleBond.class);
}
/* (non-Javadoc)
* @see org.marketcetera.core.instruments.InstrumentToMessage#set(org.marketcetera.trade.Instrument, java.lang.String, quickfix.Message)
*/
@Override
public void set(Instrument inInstrument,
String inBeginString,
Message inMessage)
{
if(UNSUPPORTED_VERSIONS.contains(FIXVersion.getFIXVersion(inBeginString))) {
throw new IllegalArgumentException(Messages.CONVERTIBLE_BONDS_NOT_SUPPORTED_FOR_FIX_VERSION.getText(inBeginString));
}
setSecurityType(inInstrument,
inBeginString,
inMessage);
inMessage.setField(new Symbol(inInstrument.getSymbol()));
}
/* (non-Javadoc)
* @see org.marketcetera.core.instruments.InstrumentToMessage#isSupported(quickfix.DataDictionary, java.lang.String)
*/
@Override
public boolean isSupported(DataDictionary inDictionary,
String inMsgType)
{
return inDictionary.isMsgField(inMsgType,
Symbol.FIELD);
}
/* (non-Javadoc)
* @see org.marketcetera.core.instruments.InstrumentToMessage#set(org.marketcetera.trade.Instrument, quickfix.DataDictionary, java.lang.String, quickfix.Message)
*/
@Override
public void set(Instrument inInstrument,
DataDictionary inDictionary,
String inMsgType,
Message inMessage)
{
setSecurityType(inInstrument,
inDictionary,
inMsgType,
inMessage);
setSymbol(inInstrument,
inDictionary,
inMsgType,
inMessage);
}
/**
* FIX versions that do not support convertible bonds
*/
private static final Set<FIXVersion> UNSUPPORTED_VERSIONS = EnumSet.of(FIXVersion.FIX40, FIXVersion.FIX41);
}