public CosmosElement GetCosmosElementContinuationToken()
        {
            MinMaxContinuationToken minMaxContinuationToken;

            if (this.globalMinMax == ItemComparer.MinValue)
            {
                minMaxContinuationToken = MinMaxContinuationToken.CreateMinValueContinuationToken();
            }
            else if (this.globalMinMax == ItemComparer.MaxValue)
            {
                minMaxContinuationToken = MinMaxContinuationToken.CreateMaxValueContinuationToken();
            }
            else if (this.globalMinMax == Undefined)
            {
                minMaxContinuationToken = MinMaxContinuationToken.CreateUndefinedValueContinuationToken();
            }
            else
            {
                minMaxContinuationToken = MinMaxContinuationToken.CreateValueContinuationToken(this.globalMinMax);
            }

            CosmosElement minMaxContinuationTokenAsCosmosElement = MinMaxContinuationToken.ToCosmosElement(minMaxContinuationToken);

            return(minMaxContinuationTokenAsCosmosElement);
        }
Esempio n. 2
0
            public static CosmosElement ToCosmosElement(MinMaxContinuationToken minMaxContinuationToken)
            {
                if (minMaxContinuationToken == null)
                {
                    throw new ArgumentNullException(nameof(minMaxContinuationToken));
                }

                Dictionary <string, CosmosElement> dictionary = new Dictionary <string, CosmosElement>();

                dictionary.Add(
                    MinMaxContinuationToken.PropertyNames.Type,
                    EnumToCosmosString.ConvertEnumToCosmosString(minMaxContinuationToken.Type));
                if (minMaxContinuationToken.Value != null)
                {
                    dictionary.Add(MinMaxContinuationToken.PropertyNames.Value, minMaxContinuationToken.Value);
                }

                return(CosmosObject.Create(dictionary));
            }
        private static TryCatch <IAggregator> TryCreate(bool isMinAggregation, CosmosElement continuationToken)
        {
            CosmosElement globalMinMax;

            if (continuationToken != null)
            {
                TryCatch <MinMaxContinuationToken> tryCreateMinMaxContinuationToken = MinMaxContinuationToken.TryCreateFromCosmosElement(continuationToken);
                if (!tryCreateMinMaxContinuationToken.Succeeded)
                {
                    return(TryCatch <IAggregator> .FromException(tryCreateMinMaxContinuationToken.Exception));
                }

                switch (tryCreateMinMaxContinuationToken.Result.Type)
                {
                case MinMaxContinuationToken.MinMaxContinuationTokenType.MinValue:
                    globalMinMax = ItemComparer.MinValue;
                    break;

                case MinMaxContinuationToken.MinMaxContinuationTokenType.MaxValue:
                    globalMinMax = ItemComparer.MaxValue;
                    break;

                case MinMaxContinuationToken.MinMaxContinuationTokenType.Undefined:
                    globalMinMax = MinMaxAggregator.Undefined;
                    break;

                case MinMaxContinuationToken.MinMaxContinuationTokenType.Value:
                    globalMinMax = tryCreateMinMaxContinuationToken.Result.Value;
                    break;

                default:
                    throw new ArgumentOutOfRangeException($"Unknown {nameof(MinMaxContinuationToken.MinMaxContinuationTokenType)}: {tryCreateMinMaxContinuationToken.Result.Type}");
                }
            }
            else
            {
                globalMinMax = isMinAggregation ? ItemComparer.MaxValue : (CosmosElement)ItemComparer.MinValue;
            }

            return(TryCatch <IAggregator> .FromResult(
                       new MinMaxAggregator(isMinAggregation : isMinAggregation, globalMinMax : globalMinMax)));
        }