import quickfix.Message; import quickfix.MessageStorePersistanceFilter; import quickfix.field.CollInquiryID; import quickfix.field.MassStatusReqID; import quickfix.field.MsgType; import quickfix.field.PosReqID; import quickfix.field.SecurityStatusReqID; import quickfix.field.TradSesReqID; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** */ public class FilterExcludingSolicited implements MessageStorePersistanceFilter { private List mIgnoredMessageWrite = new ArrayList(); /** * comma delimited message types for exclusion * e.g. 0,1,2,3,4,5,A,BF,W,X,Y,AO,BG * * @param aMessages */ public FilterExcludingSolicited(String aMessages) { mIgnoredMessageWrite = Arrays.asList(aMessages.split(",")); } public boolean isPersisted(Message aMessage) { boolean persisted = false; try { String msgType = aMessage.getHeader().getString(MsgType.FIELD); persisted = !mIgnoredMessageWrite.contains(msgType); if (persisted) { if (msgType.equals(MsgType.POSITION_REPORT)) { persisted = !aMessage.isSetField(PosReqID.FIELD); } else if (msgType.equals(MsgType.COLLATERAL_REPORT)) { persisted = !aMessage.isSetField(CollInquiryID.FIELD); } else if (msgType.equals(MsgType.TRADING_SESSION_STATUS)) { persisted = !aMessage.isSetField(TradSesReqID.FIELD); } else if (msgType.equals(MsgType.EXECUTION_REPORT)) { persisted = !aMessage.isSetField(MassStatusReqID.FIELD); } else if (msgType.equals(MsgType.SECURITY_STATUS)) { persisted = !aMessage.isSetField(SecurityStatusReqID.FIELD); } } } catch (Exception aException) { // } return persisted; } }