/// <summary> /// If field is an enum, make sure the value is valid. /// </summary> /// <param name="field"></param> public void CheckValue(Fields.IField field) { DDField fld = FieldsByTag[field.Tag]; if (fld.HasEnums() && !fld.EnumDict.ContainsKey(field.ToString())) { throw new IncorrectTagValue(field.Tag); } }
private void ProcessFieldMapToJSON(string sNode, StringBuilder sb, FieldMap fieldMap, string origChkSum = null) { Type fieldType; sb.Append($@"""{sNode}"":"); foreach (var field in fieldMap) { if (dataDictionary.TryGetFieldType(field.Key, out fieldType)) { FIXDictionary.DDField ddField = dataDictionary.FieldsByTag[field.Key]; child = new XElement(ddField.Name); child.Add(new XAttribute("Tag", field.Key)); child.Add(new XAttribute("Value", field.Value)); if (ddField.HasEnums()) { child.Add(new XAttribute("HasEnums", true)); string enumTranslation = ddField.EnumDict.FirstOrDefault(t => t.Key == field.Value.ToString()).Value; if (!string.IsNullOrEmpty(enumTranslation)) { child.Add(new XAttribute("EnumTranslation", enumTranslation)); } } if (field.Key == Tags.CheckSum && origChkSum != null) { child.Add(new XAttribute("OrigChks", origChkSum)); } int groupCount = fieldMap.GroupCount(field.Key); if (groupCount > 0) { child.Add(new XAttribute("IsGroup", "Y")); child.Add(new XAttribute("GroupsCount", groupCount)); for (int i = 1; i <= groupCount; i++) { Group currGroup = fieldMap.GetGroup(i, field.Key); ProcessFieldMapToXML(child, currGroup); } } } else { child = new XElement("UserDefined_" + field.Key.ToString()); child.Add(new XAttribute("Tag", field.Key)); child.Add(new XAttribute("Value", field.Value)); } parent.Add(child); } sb.Append("}"); }
/// <summary> /// If field is an enum, make sure the value is valid. /// </summary> /// <param name="field"></param> public void CheckValue(Fields.IField field) { DDField fld = FieldsByTag[field.Tag]; if (fld.HasEnums()) { if (fld.IsMultipleValueFieldWithEnums) { string[] splitted = field.ToString().Split(' '); foreach (string value in splitted) { if (!fld.EnumDict.ContainsKey(value)) { throw new IncorrectTagValue(field.Tag); } } } else if (!fld.EnumDict.ContainsKey(field.ToString())) { throw new IncorrectTagValue(field.Tag); } } }