void ProcessMapObjectMetadata(FieldInfo fieldInfo, ElementMetadata elem) { var mapType = fieldInfo.TypeName + "Map"; var innerElem = GetOrCreateMetadata(mapType); foreach (var f in fieldInfo.MapFields) { innerElem.AddField(new FieldInfo($"{f}!{fieldInfo.TypeName}"), DataType.Undefined); } elem.AddField(new FieldInfo($"{fieldInfo.PropertyName}!{mapType}"), DataType.Undefined); }
void ProcessComplexMetadata(FieldInfo fieldInfo, ElementMetadata elem, DataType dt, Int32 fieldLen) { // create metadata for nested type var innerElem = GetOrCreateMetadata(fieldInfo.TypeName); var fna = fieldInfo.PropertyName.Split('.'); if (fna.Length != 2) { throw new DataLoaderException($"Invalid complex name {fieldInfo.PropertyName}"); } elem.AddField(new FieldInfo($"{fna[0]}!{fieldInfo.TypeName}"), DataType.Undefined); innerElem.AddField(new FieldInfo(fieldInfo, fna[1]), dt, fieldLen); }