package org.marketcetera.marketdata.marketcetera; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.marketcetera.core.ClassVersion; import org.marketcetera.symbology.IEquityOptionSymbol; import org.marketcetera.trade.Equity; @ClassVersion("$Id: MarketceteraOptionSymbol.java 16841 2014-02-20 19:59:04Z colin $") //$NON-NLS-1$ public class MarketceteraOptionSymbol extends Equity implements IEquityOptionSymbol, Messages { static final Pattern optionSymbolPattern = Pattern.compile("(\\w{1,3})\\+(\\w)(\\w)"); //$NON-NLS-1$ private char expirationCode; private char strikeCode; private String root; public MarketceteraOptionSymbol(String symbolString) { super(symbolString); Matcher matcher = optionSymbolPattern.matcher(symbolString); if (matcher.matches()){ root = matcher.group(1); expirationCode = matcher.group(2).charAt(0); strikeCode = matcher.group(3).charAt(0); } else { throw new IllegalArgumentException(INVALID_EQUITY_OPTION_SYMBOL.getText(symbolString)); } } public char getExpirationCode() { return expirationCode; } public char getStrikeCode() { return strikeCode; } public static boolean matchesPattern(String symbolString) { return optionSymbolPattern.matcher(symbolString).matches(); } public String getRoot() { return root; } @Override public String toString() { return new StringBuilder().append(root).append("+").append(expirationCode).append(strikeCode).toString(); //$NON-NLS-1$ } private static final long serialVersionUID = 1554959422242754909L; }