package org.marketcetera.trade; import java.util.*; import org.marketcetera.util.misc.ClassVersion; /** * Enumeration of Sides of an order. * * @author anshul@marketcetera.com * @version $Id: Side.java 16882 2014-04-17 01:52:17Z colin $ * @since 1.0.0 */ @ClassVersion("$Id: Side.java 16882 2014-04-17 01:52:17Z colin $") public enum Side { /** * Sentinel value for Side that the system is not currently * aware of. */ Unknown(Character.MIN_VALUE), /** * A Buy Order. */ Buy(quickfix.field.Side.BUY), /** * A Sell Order. */ Sell(quickfix.field.Side.SELL), /** * A Sell Short Order. */ SellShort(quickfix.field.Side.SELL_SHORT), /** * A Sell Short Exempt Order. */ SellShortExempt(quickfix.field.Side.SELL_SHORT_EXEMPT); /** * Indicates if this is a buy side. * * @return a <code>boolean</code> value */ public boolean isBuy() { return equals(Buy); } /** * Indicates if this is a sell side. * * @return a <code>boolean</code> value */ public boolean isSell() { return SELL_SIDES.contains(this); } /** * Gets the Side instance. * * @param inValue the FIX char value. * * @return the Side instance. */ public static Side getInstanceForFIXValue(char inValue) { Side s = mFIXValueMap.get(inValue); return s == null ? Unknown : s; } /** * The FIX char value for this instance. * * @return the FIX char value for this instance. */ public char getFIXValue() { return mFIXValue; } /** * Creates an instance. * * @param inFIXValue the FIX char value for this instance. */ private Side(char inFIXValue) { mFIXValue = inFIXValue; } /** * FIX char of this value */ private final char mFIXValue; /** * sell side values */ private static final Set<Side> SELL_SIDES = EnumSet.of(Sell,SellShort,SellShortExempt); /** * side values by FIX value */ private static final Map<Character,Side> mFIXValueMap; static { Map<Character, Side> table = new HashMap<Character, Side>(); for(Side s:values()) { table.put(s.getFIXValue(),s); } mFIXValueMap = Collections.unmodifiableMap(table); } }