import org.slf4j.Logger; import quickfix.DataDictionary; import quickfix.Field; import quickfix.FieldMap; import quickfix.FieldNotFound; import quickfix.FieldType; import quickfix.Group; import quickfix.Message; import quickfix.field.MsgType; import java.util.Iterator; public class FIXMsgPrinter { public static void print(Logger logger, DataDictionary dd, Message message) throws FieldNotFound { String msgType = message.getHeader().getString(MsgType.FIELD); printFieldMap("", dd, msgType, message.getHeader(), logger); printFieldMap("", dd, msgType, message, logger); printFieldMap("", dd, msgType, message.getTrailer(), logger); } private static void printFieldMap(String prefix, DataDictionary dd, String msgType, FieldMap fieldMap, Logger logger) throws FieldNotFound { Iterator fieldIterator = fieldMap.iterator(); while (fieldIterator.hasNext()) { Field field = (Field) fieldIterator.next(); if (!isGroupCountField(dd, field)) { String value = fieldMap.getString(field.getTag()); if (dd.hasFieldValue(field.getTag())) { value = dd.getValueName(field.getTag(), fieldMap.getString(field.getTag())) + " (" + value + ")"; } logger.info(prefix + dd.getFieldName(field.getTag()) + ": " + value); } } Iterator groupsKeys = fieldMap.groupKeyIterator(); while (groupsKeys.hasNext()) { int groupCountTag = ((Integer) groupsKeys.next()).intValue(); logger.info(prefix + dd.getFieldName(groupCountTag) + ": count = " + fieldMap.getInt(groupCountTag)); Group g = new Group(groupCountTag, 0); int i = 1; while (fieldMap.hasGroup(i, groupCountTag)) { if (i > 1) { logger.info(prefix + " ----"); } fieldMap.getGroup(i, g); printFieldMap(prefix + " ", dd, msgType, g, logger); i++; } } } private static boolean isGroupCountField(DataDictionary dd, Field field) { return dd.getFieldTypeEnum(field.getTag()) == FieldType.NumInGroup; } }
FIX message printer
猜你喜欢
转载自seafront12.iteye.com/blog/2317059
今日推荐
周排行