Пример #1
0
        private Object ToValue(string strValue, FluxColumn column)
        {
            Arguments.CheckNotNull(column, "column");

            // Default value
            if (string.IsNullOrEmpty(strValue))
            {
                var defaultValue = column.DefaultValue;

                return(string.IsNullOrEmpty(defaultValue) ? null : ToValue(defaultValue, column));
            }

            try
            {
                switch (column.DataType)
                {
                case "boolean":
                    return(bool.TryParse(strValue, out var value) && value);

                case "unsignedLong":
                    return(Convert.ToUInt64(strValue));

                case "long":
                    return(Convert.ToInt64(strValue));

                case "double":
                    return(Convert.ToDouble(strValue, CultureInfo.InvariantCulture));

                case "base64Binary":
                    return(Convert.FromBase64String(strValue));

                case "dateTime:RFC3339":
                case "dateTime:RFC3339Nano":
                    return(InstantPattern.ExtendedIso.Parse(strValue).Value);

                case "duration":
                    return(Duration.FromNanoseconds(Convert.ToDouble(strValue)));

                default:
                    return(strValue);
                }
            }
            catch (Exception)
            {
                throw new FluxCsvParserException("Unable to parse CSV response.");
            }
        }
Пример #2
0
        private void AddDataTypes(FluxTable table, CsvReader dataTypes)
        {
            Arguments.CheckNotNull(table, "table");
            Arguments.CheckNotNull(dataTypes, "dataTypes");

            for (var index = 1; index < dataTypes.Context.Record.Length; index++)
            {
                var dataType = dataTypes[index];

                if (string.IsNullOrEmpty(dataType))
                {
                    continue;
                }

                var columnDef = new FluxColumn
                {
                    DataType = dataType,
                    Index    = index - 1
                };

                table.Columns.Add(columnDef);
            }
        }