/// <summary> /// Get the .NET name for a vision field /// </summary> /// <param name="fieldDefinition">Definition of the field</param> /// <returns>.NET name of the field</returns> public static string GetDotnetName(this VisionFieldDefinition fieldDefinition) { if (fieldDefinition == null || string.IsNullOrEmpty(fieldDefinition.Name)) { return(null); } var nameChars = fieldDefinition.Name.ToCharArray(); var result = new List <char>(); bool upperCase = true; foreach (var c in nameChars) { if (char.IsLetterOrDigit(c)) { result.Add(upperCase ? char.ToUpperInvariant(c) : char.ToLowerInvariant(c)); upperCase = false; } else { upperCase = true; } } return(new string(result.ToArray())); }
/// <summary> /// Gets a field definition form an XElement /// </summary> /// <param name="field">XElement that describes the field</param> /// <returns>The requested field definition</returns> private VisionFieldDefinition GetFieldDefiniton(XElement field) { var result = new VisionFieldDefinition { Name = (string)field.Attribute(XfdNs + "field-name"), Size = (int)field.Attribute(XfdNs + "field-length"), Scale = (int)field.Attribute(XfdNs + "field-scale") * -1, Offset = (int)field.Attribute(XfdNs + "field-offset"), Bytes = (int)field.Attribute(XfdNs + "field-bytes"), Level = (int)field.Attribute(XfdNs + "field-level") }; // Group field result.IsGroupField = (int)field.Attribute(XfdNs + "field-condition") == 999; // Data type var fieldType = (int)field.Attribute(XfdNs + "field-type"); var userFlag = (int)field.Attribute(XfdNs + "field-user-flags"); switch (fieldType) { case 1: // Unsigned numeric result.FieldType = VisionFieldType.Number; result.IsSigned = false; if (userFlag == 1) { result.FieldType = VisionFieldType.Date; } break; case 2: // Signed numeric result.FieldType = VisionFieldType.Number; result.IsSigned = true; break; case 16: // Alfanumeric case 18: // Alphabetic case 20: // Alphanumeric edited result.FieldType = VisionFieldType.String; result.IsSigned = false; break; case 17: // Alphanumeric justified case 19: // Alphabetic justified case 21: // Alphanumerico edited justified result.FieldType = VisionFieldType.JustifiedString; result.IsSigned = false; break; default: // Other result.FieldType = VisionFieldType.String; result.IsSigned = false; break; } // Comp field if (result.Bytes < result.Size) { result.Size = result.Bytes; result.FieldType = VisionFieldType.Comp; result.Scale = 0; } return(result); }