NuoDb.Data.Client.EncodedDataStream.getValue C# (CSharp) Method

getValue() private method

private getValue ( SQLContext sqlContext ) : Value
sqlContext SQLContext
return Value
        internal virtual Value getValue(SQLContext sqlContext)
        {
            decode();

            switch (type)
            {
                case edsTypeNull:
                    return new ValueNull();

                case edsTypeUtf8:
                    return new ValueString(@string);

                case edsTypeOpaque:
                    return new ValueBytes(bytes);

                case edsTypeScaled:
                    return new ValueNumber(ScaleDecimal(integer64, scale));

                case edsTypeInt32:
                    return new ValueInt(integer32, 0);

                case edsTypeInt64:
                    return new ValueLong(integer64, 0);

                case edsTypeBoolean:
                    return new ValueBoolean(@bool);

                case edsTypeDouble:
                    return new ValueDouble(dbl);

                case edsTypeScaledTime:
                    {
                        long inNanos = Value.reScale(integer64, scale, NANOSECONDS_SCALE);
                        DateTime utcTime = new DateTime(baseDate.Ticks + inNanos / NANOSECONDS_PER_TICK, DateTimeKind.Utc);
                        DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sqlContext.TimeZone);
                        return new ValueTime(localTime);
                    }

                case edsTypeTime:
                    {
                        DateTime utcTime = new DateTime(baseDate.Ticks + integer64 * TimeSpan.TicksPerMillisecond, DateTimeKind.Utc);
                        DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sqlContext.TimeZone);
                        return new ValueTime(localTime);
                    }

                case edsTypeScaledDate:
                    {
                        long inSeconds = Value.reScale(integer64, scale, SECONDS_SCALE);
                        DateTime utcTime = new DateTime(baseDate.Ticks + inSeconds * TimeSpan.TicksPerSecond, DateTimeKind.Utc);
                        DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sqlContext.TimeZone);
                        return new ValueDate(localTime);
                    }

                case edsTypeMilliseconds:
                    {
                        DateTime utcTime = new DateTime(baseDate.Ticks + integer64 * TimeSpan.TicksPerMillisecond, DateTimeKind.Utc);
                        DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sqlContext.TimeZone);
                        return new ValueDate(localTime);
                    }

                case edsTypeScaledTimestamp:
                    {
                        long inNanos = Value.reScale(integer64, scale, NANOSECONDS_SCALE);
                        DateTime utcTime = new DateTime(baseDate.Ticks + inNanos / NANOSECONDS_PER_TICK, DateTimeKind.Utc);
                        DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sqlContext.TimeZone);
                        return new ValueTimestamp(localTime);
                    }

                case edsTypeNanoseconds:
                    {
                        DateTime utcTime = new DateTime(baseDate.Ticks + integer64 / NANOSECONDS_PER_TICK, DateTimeKind.Utc);
                        DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, sqlContext.TimeZone);
                        return new ValueTimestamp(localTime);
                    }

                case edsTypeBigInt:
                    return new ValueNumber(bigDecimal);

            }

            throw new NuoDbSqlException("On message type " + currentMessageType + ":NuoDB jdbc decode value type " + type + " not yet implemented");
        }