Exemplo n.º 1
0
        private async Task <IRandomAccessStreamWithContentType> GetRandomStream(LocalStorageDataConfig config)
        {
            var         uri  = new Uri(string.Format("ms-appx://{0}", config.FilePath));
            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(uri);

            return(await file.OpenReadAsync());
        }
Exemplo n.º 2
0
        public async Task <IEnumerable <TSchema> > GetDataByIdsAsync <TSchema>(LocalStorageDataConfig config, IEnumerable <string> ids, IParser <TSchema> parser) where TSchema : SchemaBase
        {
#if UWP
            IRandomAccessStreamWithContentType randomStream = await GetRandomStream(config);

            using (StreamReader r = new StreamReader(randomStream.AsStreamForRead()))
            {
                var items = await parser.ParseAsync(await r.ReadToEndAsync());

                if (items != null && items.Any())
                {
                    var totalAsTSchema = (items.ToList() as IEnumerable <TSchema>);

                    var resultToReturn = totalAsTSchema.AsQueryable().Where(x => ids.Contains(x._id)).ToList();
                    return(resultToReturn);
                }
                return(new TSchema[0]);
            }
#else
            IFolder folder = FileSystem.Current.LocalStorage;
            IFile   file   = await folder.GetFileAsync(config.FilePath);

            var items = await parser.ParseAsync(await file.ReadAllTextAsync());

            if (items != null && items.Any())
            {
                var totalAsTSchema = (items.ToList() as IEnumerable <TSchema>);

                var resultToReturn = totalAsTSchema.AsQueryable().Where(x => ids.Contains(x._id)).ToList();
                return(resultToReturn);
            }
            return(new TSchema[0]);
#endif
        }
Exemplo n.º 3
0
 protected override void ValidateConfig(LocalStorageDataConfig config)
 {
     if (config.FilePath == null)
     {
         throw new ConfigParameterNullException("FilePath");
     }
 }
Exemplo n.º 4
0
        public async Task TestNullUrlConfig()
        {
            var config = new LocalStorageDataConfig
            {
                FilePath = null
            };

            var dataProvider = new LocalStorageDataProvider<MenuSchema>();

            ConfigParameterNullException exception = await ExceptionsAssert.ThrowsAsync<ConfigParameterNullException>(async () => await dataProvider.LoadDataAsync(config));
            Assert.IsTrue(exception.Message.Contains("FilePath"));
        }
Exemplo n.º 5
0
        public async Task TestMaxRecordsLocalStaticCollection_Min()
        {
            var config = new LocalStorageDataConfig
            {
                FilePath = "/Assets/LocalCollectionData.json"
            };
            var maxRecords = 1;
            var dataProvider = new LocalStorageDataProvider<CollectionSchema>();
            IEnumerable<CollectionSchema> data = await dataProvider.LoadDataAsync(config, maxRecords);

            Assert.IsNotNull(data);
            Assert.AreEqual(maxRecords, data.Count());
        }
Exemplo n.º 6
0
        public async Task LoadStaticCollection()
        {
            var config = new LocalStorageDataConfig
            {
                FilePath = "/Assets/LocalCollectionData.json"
            };

            var dataProvider = new LocalStorageDataProvider<CollectionSchema>();
            IEnumerable<CollectionSchema> data = await dataProvider.LoadDataAsync(config);

            Assert.IsNotNull(data);
            Assert.AreNotEqual(data.Count(), 0);
        }
Exemplo n.º 7
0
 private static void Assertions(LocalStorageDataConfig config, IParser <T> parser)
 {
     if (config == null)
     {
         throw new ConfigNullException();
     }
     if (parser == null)
     {
         throw new ParserNullException();
     }
     if (config.FilePath == null)
     {
         throw new ConfigParameterNullException("FilePath");
     }
 }
Exemplo n.º 8
0
        public override async Task <IEnumerable <T> > LoadDataAsync(LocalStorageDataConfig config, IParser <T> parser)
        {
            Assertions(config, parser);

            var uri = new Uri(string.Format("ms-appx://{0}", config.FilePath));

            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(uri);

            IRandomAccessStreamWithContentType randomStream = await file.OpenReadAsync();

            using (StreamReader r = new StreamReader(randomStream.AsStreamForRead()))
            {
                return(parser.Parse(await r.ReadToEndAsync()));
            }
        }
Exemplo n.º 9
0
        public async void GetItems()
        {
            string localStorageQuery = "/Assets/LocalStorageSamples.json";
            int maxRecordsParam = 10;
            string orderBy = "Title";
            SortDirection sortDirection = SortDirection.Ascending;

            _localStorageDataProvider = new LocalStorageDataProvider<LocalStorageDataSchema>();
            this.Items = new ObservableCollection<object>();

            var config = new LocalStorageDataConfig
            {
                FilePath = localStorageQuery,
                OrderBy = orderBy,
                SortDirection = sortDirection
            };

            var items = await _localStorageDataProvider.LoadDataAsync(config, maxRecordsParam);

            foreach (var item in items)
            {
                Items.Add(item);
            }
        }
Exemplo n.º 10
0
 public LocalStorageDataProvider(LocalStorageDataConfig config)
     : base(config, new GenericParser <T>())
 {
 }
Exemplo n.º 11
0
 public override async Task <IEnumerable <T> > LoadDataAsync(LocalStorageDataConfig config)
 {
     return(await LoadDataAsync(config, new GenericParser <T>()));
 }
Exemplo n.º 12
0
        protected override async Task <IEnumerable <TSchema> > GetDataAsync <TSchema>(LocalStorageDataConfig config, int pageSize, IParser <TSchema> parser)
        {
            ContinuationToken = "1";
#if UWP
            IRandomAccessStreamWithContentType randomStream = await GetRandomStream(config);

            using (StreamReader r = new StreamReader(randomStream.AsStreamForRead()))
            {
                var items = await parser.ParseAsync(await r.ReadToEndAsync());

                if (items != null && items.Any())
                {
                    _totalItems = items.ToList();

                    var totalAsTSchema = (_totalItems as IEnumerable <TSchema>);

                    _hasMoreItems     = totalAsTSchema.Count() > pageSize;
                    ContinuationToken = GetContinuationToken(ContinuationToken);

                    var resultToReturn = totalAsTSchema.AsQueryable().OrderBy(config.OrderBy, config.OrderDirection).Take(pageSize).ToList();
                    return(resultToReturn);
                }
                _hasMoreItems = false;
                return(new TSchema[0]);
            }
#else
            IEnumerable <TSchema> items = null;
            if (config.AssemblyForEmbeddedResource == null)
            {
                IFolder folder = FileSystem.Current.LocalStorage;
                IFile   file   = await folder.GetFileAsync(config.FilePath);

                items = await parser.ParseAsync(await file.ReadAllTextAsync());
            }
            else
            {
                string filename = config.FilePath.Replace('/', '.');
                filename = config.AssemblyForEmbeddedResource.GetName().Name + (filename.StartsWith(".") ? "" : ".") +
                           filename;

                Stream stream = config.AssemblyForEmbeddedResource.GetManifestResourceStream(filename);
                using (var reader = new System.IO.StreamReader(stream))
                {
                    items = await parser.ParseAsync(await reader.ReadToEndAsync());
                }
            }
            if (items != null && items.Any())
            {
                _totalItems = items.ToList();

                var totalAsTSchema = (_totalItems as IEnumerable <TSchema>);

                _hasMoreItems     = totalAsTSchema.Count() > pageSize;
                ContinuationToken = GetContinuationToken(ContinuationToken);

                var resultToReturn =
                    totalAsTSchema.AsQueryable()
                    .OrderBy(config.OrderBy, config.OrderDirection)
                    .Take(pageSize)
                    .ToList();
                return(resultToReturn);
            }

            _hasMoreItems = false;
            return(new TSchema[0]);
#endif
        }
Exemplo n.º 13
0
 public async Task <IEnumerable <TSchema> > GetDataByIdsAsync <TSchema>(LocalStorageDataConfig config, IEnumerable <string> ids) where TSchema : SchemaBase
 {
     return(await GetDataByIdsAsync(config, ids, new JsonParser <TSchema>()));
 }
Exemplo n.º 14
0
        protected override async Task <IEnumerable <TSchema> > GetDataAsync <TSchema>(LocalStorageDataConfig config, int pageSize, IParser <TSchema> parser)
        {
            ContinuationToken = "1";
            IRandomAccessStreamWithContentType randomStream = await GetRandomStream(config);

            using (StreamReader r = new StreamReader(randomStream.AsStreamForRead()))
            {
                var items = await parser.ParseAsync(await r.ReadToEndAsync());

                if (items != null && items.Any())
                {
                    _totalItems = items.ToList();

                    var totalAsTSchema = (_totalItems as IEnumerable <TSchema>);

                    _hasMoreItems     = totalAsTSchema.Count() > pageSize;
                    ContinuationToken = GetContinuationToken(ContinuationToken);

                    var resultToReturn = totalAsTSchema.AsQueryable().OrderBy(config.OrderBy, config.OrderDirection).Take(pageSize).ToList();
                    return(resultToReturn);
                }
                _hasMoreItems = false;
                return(new TSchema[0]);
            }
        }
Exemplo n.º 15
0
        public async Task LoadStaticCollection_ByIds()
        {
            var config = new LocalStorageDataConfig
            {
                FilePath = "/Assets/LocalCollectionData.json"
            };

            var ids = new List<string>();
            ids.Add("555ee83e352d0403381fdb7c");
            ids.Add("555ee83e352d0403381fdb7a");

            var dataProvider = new LocalStorageDataProvider<CollectionSchema>();
            IEnumerable<CollectionSchema> data = await dataProvider.GetDataByIdsAsync<CollectionSchema>(config, ids);

            Assert.IsNotNull(data);
            Assert.AreEqual(2, data.Count());
        }
Exemplo n.º 16
0
        public async Task LoadMoreStaticCollection_Sorting()
        {
            var config = new LocalStorageDataConfig
            {
                FilePath = "/Assets/LocalCollectionData.json"
            };

            var dataProvider = new LocalStorageDataProvider<CollectionSchema>();
            await dataProvider.LoadDataAsync(config, 2);
            IEnumerable<CollectionSchema> data = await dataProvider.LoadMoreDataAsync();

            config.OrderBy = "Name";
            config.OrderDirection = SortDirection.Ascending;
            IEnumerable<CollectionSchema> dataAsc = await dataProvider.LoadDataAsync(config, 2);
            dataAsc = await dataProvider.LoadMoreDataAsync();
            config.OrderDirection = SortDirection.Descending;
            IEnumerable<CollectionSchema> dataDesc = await dataProvider.LoadDataAsync(config, 2);
            dataDesc = await dataProvider.LoadMoreDataAsync();

            Assert.AreNotEqual(data.FirstOrDefault()?.Name, dataAsc.FirstOrDefault().Name);

            var dataExpected = dataAsc.OrderBy(x => x.Name).ToList();
            for (int i = 0; i < dataExpected.Count() - 1; i++)
            {
                Assert.AreEqual(dataExpected[i].Name, dataAsc.ToList()[i].Name);
            }

            dataExpected = dataDesc.OrderByDescending(x => x.Name).ToList();
            for (int i = 0; i < dataExpected.Count() - 1; i++)
            {
                Assert.AreEqual(dataExpected[i].Name, dataDesc.ToList()[i].Name);
            }
        }
Exemplo n.º 17
0
        public async Task LoadMoreDataInvalidOperationStaticCollection()
        {
            var config = new LocalStorageDataConfig
            {
                FilePath = "/Assets/LocalCollectionData.json"
            };

            var dataProvider = new LocalStorageDataProvider<CollectionSchema>();
            InvalidOperationException exception = await ExceptionsAssert.ThrowsAsync<InvalidOperationException>(async () => await dataProvider.LoadMoreDataAsync());

        }
Exemplo n.º 18
0
        protected override async Task <IEnumerable <TSchema> > GetDataAsync <TSchema>(LocalStorageDataConfig config, int maxRecords, IParser <TSchema> parser)
        {
            var uri = new Uri(string.Format("ms-appx://{0}", config.FilePath));

            StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(uri);

            IRandomAccessStreamWithContentType randomStream = await file.OpenReadAsync();

            using (StreamReader r = new StreamReader(randomStream.AsStreamForRead()))
            {
                return(parser.Parse(await r.ReadToEndAsync()));
            }
        }
Exemplo n.º 19
0
        protected override async Task <IEnumerable <TSchema> > GetMoreDataAsync <TSchema>(LocalStorageDataConfig config, int pageSize, IParser <TSchema> parser)
        {
            int page  = Convert.ToInt32(ContinuationToken);
            var items = await Task.Run(() => { return(GetMoreData <TSchema>(pageSize, page)); });

            _hasMoreItems     = items.Any();
            ContinuationToken = GetContinuationToken(ContinuationToken);

            return(items);
        }
Exemplo n.º 20
0
 public LocalStorageDataProvider(LocalStorageDataConfig config, IParser <T> parser)
     : base(config, parser)
 {
 }
Exemplo n.º 21
0
 protected override IParser <T> GetDefaultParserInternal(LocalStorageDataConfig config)
 {
     return(new JsonParser <T>());
 }
Exemplo n.º 22
0
        private async void Request()
        {
            try
            {
                IsBusy = true;
                HasErrors = false;
                NoItems = false;
                DataProviderRawData = string.Empty;
                Items.Clear();

                var config = new LocalStorageDataConfig
                {
                    FilePath = LocalStorageQuery,
                    OrderBy = OrderBy.ToString(),
                    OrderDirection = SortDirection
                };

                var items = await localStorageDataProvider.LoadDataAsync(config, MaxRecordsParam);

                NoItems = !items.Any();

                foreach (var item in items)
                {
                    Items.Add(item);
                }

                var rawParser = new RawParser();
                var rawData = await rawDataProvider.LoadDataAsync(config, MaxRecordsParam, rawParser);
                DataProviderRawData = rawData.FirstOrDefault()?.Raw;
            }
            catch (Exception ex)
            {
                DataProviderRawData += ex.Message;
                DataProviderRawData += ex.StackTrace;
                HasErrors = true;
            }
            finally
            {
                IsBusy = false;
            }
        }