package org.marketcetera.trade; import java.math.BigDecimal; import java.util.TreeMap; import java.util.Map; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlSeeAlso; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Base class for orders. This class is public for the sake of * JAXB and is not intended for general use. * */ @ClassVersion("$Id: OrderBaseImpl.java 16604 2013-06-26 14:49:42Z colin $") /* * Use field accessors otherwise custom fields do not get unmarshalled. This * happens because JAXB expects to be able to modify the Map after supplying it * to setCustomFields()! See JAXB Bug # 596 * https://jaxb.dev.java.net/issues/show_bug.cgi?id=596 */ @XmlAccessorType(XmlAccessType.FIELD) @XmlSeeAlso ({OrderCancelImpl.class, OrderReplaceImpl.class, OrderSingleImpl.class, Equity.class, Option.class, Future.class, Currency.class }) //todo: figure out a way to dynamic add instrument types to the XmlSeeAlso list public class OrderBaseImpl implements OrderBase { @Override public OrderID getOrderID() { return mOrderID; } @Override public void setOrderID(OrderID inOrderID) { mOrderID = inOrderID; } @Override public Side getSide() { return mSide; } @Override public void setSide(Side inSide) { mSide = inSide; } @Override public Instrument getInstrument() { return mInstrument; } @Override public void setInstrument(Instrument inInstrument) { mInstrument = inInstrument; } @Override public BigDecimal getQuantity() { return mQuantity; } @Override public void setQuantity(BigDecimal inQuantity) { mQuantity = inQuantity; } @Override public Map<String, String> getCustomFields() { return mCustomFields == null ? null : new TreeMap<String,String>(mCustomFields); } @Override public void setCustomFields(Map<String, String> inCustomFields) { mCustomFields = inCustomFields == null ? null : new TreeMap<String,String>(inCustomFields); } @Override public SecurityType getSecurityType() { return mInstrument == null? null: mInstrument.getSecurityType(); } @Override public BrokerID getBrokerID() { return mBrokerID; } @Override public void setBrokerID(BrokerID inBrokerID) { mBrokerID = inBrokerID; } @Override public String getAccount() { return mAccount; } @Override public void setAccount(String inAccount) { mAccount = inAccount; } /* (non-Javadoc) * @see org.marketcetera.trade.OrderBase#getText() */ @Override public String getText() { return mText; } /* (non-Javadoc) * @see org.marketcetera.trade.OrderBase#setText(java.lang.String) */ @Override public void setText(String inText) { mText = inText; } private OrderID mOrderID; private Side mSide; private BigDecimal mQuantity; private Map<String,String> mCustomFields; private BrokerID mBrokerID; private String mAccount; private String mText; private Instrument mInstrument; private static final long serialVersionUID = 1L; }