package org.marketcetera.symbol;
import org.apache.commons.lang.StringUtils;
import org.marketcetera.options.OptionUtils;
import org.marketcetera.trade.Currency;
import org.marketcetera.trade.Equity;
import org.marketcetera.trade.Future;
import org.marketcetera.trade.Instrument;
import org.marketcetera.util.misc.ClassVersion;
/* $License$ */
/**
* Resolves symbols according to patterns.
*
* @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a>
* @version $Id: PatternSymbolResolver.java 16901 2014-05-11 16:14:11Z colin $
* @since 2.4.0
*/
@ClassVersion("$Id: PatternSymbolResolver.java 16901 2014-05-11 16:14:11Z colin $")
public class PatternSymbolResolver
implements SymbolResolver
{
/* (non-Javadoc)
* @see com.marketcetera.ors.symbol.SymbolResolver#resolveSymbol(java.lang.String)
*/
@Override
public Instrument resolveSymbol(String inSymbol)
{
inSymbol = StringUtils.trimToNull(inSymbol);
if(inSymbol == null) {
throw new NullPointerException();
}
try {
return Future.fromString(inSymbol);
} catch (IllegalArgumentException ignored) {}
try {
return OptionUtils.getOsiOptionFromString(inSymbol);
} catch (IllegalArgumentException ignored) {}
if(inSymbol.contains("/")) { //$NON-NLS-1$
return new Currency(inSymbol);
}
return new Equity(inSymbol);
}
}