PowerArgs.Cli.LoadMoreDataSource.GetDataView C# (CSharp) Method

GetDataView() public method

public GetDataView ( CollectionQuery query ) : CollectionDataView
query CollectionQuery
return CollectionDataView
        public override CollectionDataView GetDataView(CollectionQuery query)
        {
            lock(cachedData)
            {
                var cacheState = GetCacheState(query);

                if (cacheState != CachedDataViewState.CompleteHit && isLoading == false && HasAllDataBeenLoaded(query) == false)
                {
                    isLoading = true;
                    pump.QueueAsyncAction(LoadMoreAsync(query, lastContinuationToken), (t) =>
                     {
                         if (t.Exception != null) throw new AggregateException(t.Exception);
                         lock (cachedData)
                         {
                             CachedDataSet results;
                             if (cachedData.TryGetValue(query.CacheKey, out results) == false)
                             {
                                 results = new CachedDataSet();
                                 results.Items.AddRange(t.Result.Items);
                                 cachedData.Add(query.CacheKey, results);
                             }
                             else
                             {
                                 results.Items.AddRange(t.Result.Items);
                             }

                             if (t.Result.ContinuationToken == null)
                             {
                                 results.IsComplete = true;
                             }
                         }

                         lastContinuationToken = t.Result.ContinuationToken;
                         isLoading = false;
                         FireDataChanged();
                     });
                }

                if (cacheState == CachedDataViewState.CompleteHit)
                {
                    return CreateFromCache(query, true, HasAllDataBeenLoaded(query) && IsEndOfCache(query));
                }
                else if (cacheState == CachedDataViewState.CompleteMiss)
                {
                    return new CollectionDataView(new List<object>(), HasAllDataBeenLoaded(query), HasAllDataBeenLoaded(query), query.Skip);
                }
                else
                {
                    return CreateFromCache(query, HasAllDataBeenLoaded(query), HasAllDataBeenLoaded(query));
                }
            }
        }