package org.marketcetera.trade; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.marketcetera.quickfix.FIXMessageUtil; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Order status values. * * @author anshul@marketcetera.com * @version $Id: OrderStatus.java 16339 2012-10-31 15:59:24Z colin $ * @since 1.0.0 */ @ClassVersion("$Id: OrderStatus.java 16339 2012-10-31 15:59:24Z colin $") //$NON-NLS-1$ public enum OrderStatus { /** * Sentinel value for Order Status that the system is not currently * aware of. */ Unknown(Character.MIN_VALUE), New(quickfix.field.OrdStatus.NEW), PartiallyFilled(quickfix.field.OrdStatus.PARTIALLY_FILLED), Filled(quickfix.field.OrdStatus.FILLED), DoneForDay(quickfix.field.OrdStatus.DONE_FOR_DAY), Canceled(quickfix.field.OrdStatus.CANCELED), Replaced(quickfix.field.OrdStatus.REPLACED), PendingCancel(quickfix.field.OrdStatus.PENDING_CANCEL), Stopped(quickfix.field.OrdStatus.STOPPED), Rejected(quickfix.field.OrdStatus.REJECTED), Suspended(quickfix.field.OrdStatus.SUSPENDED), PendingNew(quickfix.field.OrdStatus.PENDING_NEW), Calculated(quickfix.field.OrdStatus.CALCULATED), Expired(quickfix.field.OrdStatus.EXPIRED), AcceptedForBidding(quickfix.field.OrdStatus.ACCEPTED_FOR_BIDDING), PendingReplace(quickfix.field.OrdStatus.PENDING_REPLACE); /** * Indicates if an order at this <code>OrderStatus</code> may be cancelled. * * @return a <code>boolean</code> value */ public boolean isCancellable() { return FIXMessageUtil.isCancellable(getFIXValue()); } /** * The FIX char value for this instance. * * @return the FIX char value for this instance. */ public char getFIXValue() { return mFIXValue; } /** * Returns the OrderStatus instance corresponding to supplied FIX * field char value. * * @param inValue the FIX field value. * * @return the corresponding OrderStatus instance. */ public static OrderStatus getInstanceForFIXValue(char inValue) { OrderStatus status = mFIXValueTable.get(inValue); return status == null ? Unknown : status; } /** * Creates an instance. * * @param inFIXValue the FIX char value for this instance. */ private OrderStatus(char inFIXValue) { mFIXValue = inFIXValue; } private final char mFIXValue; private static final Map<Character, OrderStatus> mFIXValueTable; static { Map<Character, OrderStatus> table = new HashMap<Character, OrderStatus>(); for(OrderStatus status: values()) { table.put(status.getFIXValue(), status); } mFIXValueTable = Collections.unmodifiableMap(table); } }