Exemplo n.º 1
0
        /// <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);
        }