int calculateLength() { int result = 0; for (final Field<?> field : fields.values()) { int tag = field.getField(); if (tag != BeginString.FIELD && tag != BodyLength.FIELD && tag != CheckSum.FIELD && !isGroupField(tag)) { result += field.getLength(); } } for (Entry<Integer, List<Group>> entry : groups.entrySet()) { final List<Group> groupList = entry.getValue(); if (!groupList.isEmpty()) { if(IS_STRING_EQUIVALENT) { result += getStringLength(entry.getKey()) + getStringLength(groupList.size()) + 2; } else { result += MessageUtils.length(CharsetSupport.getCharsetInstance(), NumbersCache.get(entry.getKey())); result += MessageUtils.length(CharsetSupport.getCharsetInstance(), NumbersCache.get(groupList.size())); result += 2; } for (int i = 0; i < groupList.size(); i++) { result += groupList.get(i).calculateLength(); } } } return result; }
int calculateLength() { int result = 0; for (final Field<?> field : fields.values()) { int tag = field.getField(); if (tag != BeginString.FIELD && tag != BodyLength.FIELD && tag != CheckSum.FIELD && !isGroupField(tag)) { result += field.getLength(); } } for (Entry<Integer, List<Group>> entry : groups.entrySet()) { final List<Group> groupList = entry.getValue(); if (!groupList.isEmpty()) { if(IS_STRING_EQUIVALENT) { result += getStringLength(entry.getKey()) + getStringLength(groupList.size()) + 2; } else { result += MessageUtils.length(CharsetSupport.getCharsetInstance(), NumbersCache.get(entry.getKey())); result += MessageUtils.length(CharsetSupport.getCharsetInstance(), NumbersCache.get(groupList.size())); result += 2; } for (int i = 0; i < groupList.size(); i++) { result += groupList.get(i).calculateLength(); } } } return result; }