internal static FieldType GetFieldType()

in src/GraphEngine.DataImporter/GraphEngine.DataImporter/RDFUtils.cs [133:189]


        internal static FieldType GetFieldType(ref Triple triple)
        {
            if (triple.ValueType == ValueType.vt_graphedge) return FieldType.ft_graphedge;
            if (triple.ValueType == ValueType.vt_literal) return FieldType.ft_string;
            if (triple.ValueType == ValueType.vt_datetime) return FieldType.ft_datetime;
            if (triple.ValueType == ValueType.vt_guid) return FieldType.ft_guid;
            var value = triple.Object;


            if (value.Contains(".") || value.Contains("E") || value.Contains("e")) // floating point value
            {
                float f; double d; decimal de;
                if (float.TryParse(value, out f))
                    return FieldType.ft_float;
                if (double.TryParse(value, out d))
                    return FieldType.ft_double;
                if (decimal.TryParse(value, out de))
                    return FieldType.ft_decimal;
            }
            else // integer
            {
                if (value.StartsWith("-")) // signed value
                {
                    sbyte s; Int16 i16; Int32 i32; Int64 i64;
                    if (sbyte.TryParse(value, out s))
                        return FieldType.ft_sbyte;
                    if (Int16.TryParse(value, out i16))
                        return FieldType.ft_short;
                    if (Int32.TryParse(value, out i32))
                        return FieldType.ft_int;
                    if (Int64.TryParse(value, out i64))
                        return FieldType.ft_long;
                }
                else // unsigned value
                {
                    byte b; UInt16 u16; UInt32 u32; UInt64 u64;
                    if (byte.TryParse(value, out b))
                        return FieldType.ft_byte;
                    if (UInt16.TryParse(value, out u16))
                        return FieldType.ft_ushort;
                    if (UInt32.TryParse(value, out u32))
                        return FieldType.ft_uint;
                    if (UInt64.TryParse(value, out u64))
                        return FieldType.ft_ulong;
                }
            }

            {
                bool b; DateTime dt; Guid guid;

                if (Boolean.TryParse(value, out b)) return FieldType.ft_bool;
                if (DateTime.TryParse(value, out dt)) return FieldType.ft_datetime;
                if (Guid.TryParse(value, out guid)) return FieldType.ft_guid;
            }

            return FieldType.ft_string;
        }