FIX message printer

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;
}
}

猜你喜欢

转载自seafront12.iteye.com/blog/2317059