package org.marketcetera.event.impl; import java.math.BigDecimal; import javax.annotation.concurrent.ThreadSafe; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import org.marketcetera.event.AskEvent; import org.marketcetera.event.OptionEvent; import org.marketcetera.event.beans.OptionBean; import org.marketcetera.event.beans.QuoteBean; import org.marketcetera.options.ExpirationType; import org.marketcetera.trade.Instrument; import org.marketcetera.trade.Option; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Provides an Option implementation of {@link AskEvent}. * * @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a> * @version $Id: OptionAskEventImpl.java 16878 2014-04-14 22:55:48Z colin $ * @since 2.0.0 */ @ThreadSafe @XmlRootElement(name="optionAsk") @XmlAccessorType(XmlAccessType.NONE) @ClassVersion("$Id: OptionAskEventImpl.java 16878 2014-04-14 22:55:48Z colin $") public class OptionAskEventImpl extends AbstractQuoteEventImpl implements AskEvent, OptionEvent { /* (non-Javadoc) * @see org.marketcetera.event.OptionEvent#getMultiplier() */ @Override public BigDecimal getMultiplier() { return option.getMultiplier(); } /* (non-Javadoc) * @see org.marketcetera.event.OptionEvent#hasDeliverable() */ @Override public boolean hasDeliverable() { return option.hasDeliverable(); } /* (non-Javadoc) * @see org.marketcetera.event.HasUnderlyingInstrument#getUnderlyingInstrument() */ @Override public Instrument getUnderlyingInstrument() { return option.getUnderlyingInstrument(); } /* (non-Javadoc) * @see org.marketcetera.event.OptionEvent#getExpirationType() */ @Override public ExpirationType getExpirationType() { return option.getExpirationType(); } /* (non-Javadoc) * @see org.marketcetera.event.HasOption#getInstrument() */ @Override public Option getInstrument() { return (Option)super.getInstrument(); } /* (non-Javadoc) * @see org.marketcetera.event.OptionEvent#getOpraSymbol() */ @Override public String getProviderSymbol() { return option.getProviderSymbol(); } /** * Create a new OptionAskEventImpl instance. * * @param inQuote a <code>QuoteBean</code> value * @param inOption an <code>OptionBean</code> value * @throws IllegalArgumentException if <code>MessageId</code> < 0 * @throws IllegalArgumentException if <code>Timestamp</code> is <code>null</code> * @throws IllegalArgumentException if <code>Instrument</code> is <code>null</code> * @throws IllegalArgumentException if <code>Price</code> is <code>null</code> * @throws IllegalArgumentException if <code>Size</code> is <code>null</code> * @throws IllegalArgumentException if <code>Exchange</code> is <code>null</code> or empty * @throws IllegalArgumentException if <code>ExchangeTimestamp</code> is <code>null</code> or empty * @throws IllegalArgumentException if <code>Action</code> is <code>null</code> * @throws IllegalArgumentException if <code>UnderlyingInstrument</code> is <code>null</code> * @throws IllegalArgumentException if <code>ExpirationType</code> is <code>null</code> */ OptionAskEventImpl(QuoteBean inQuote, OptionBean inOption) { super(inQuote); option = OptionBean.copy(inOption); option.validate(); } /* (non-Javadoc) * @see org.marketcetera.event.impl.AbstractQuoteEventImpl#getDescription() */ @Override protected String getDescription() { return description; } /** * Create a new OptionAskEventImpl instance. * * <p>This constructor is intended to be used by JAXB. */ @SuppressWarnings("unused") private OptionAskEventImpl() { option = new OptionBean(); } /** * provides a human-readable description of this event type (does not need to be localized) */ private static final String description = "Option Ask"; //$NON-NLS-1$ /** * the option attributes */ @XmlElement private final OptionBean option; private static final long serialVersionUID = 1L; }