Esempio n. 1
0
        /// <summary>
        /// The main page loaded.
        /// </summary>
        /// <param name="sender">
        /// The sender.
        /// </param>
        /// <param name="e">
        /// The e.
        /// </param>
        public void MainPageLoaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            var queryOptions = new QueryOptions(
                CommonFileQuery.OrderByTitle,
                new List <string> {
                ".jpg", ".gif", ".tif", ".png"
            })
            {
                FolderDepth   = FolderDepth.Deep,
                IndexerOption = IndexerOption.UseIndexerWhenAvailable
            };

            queryOptions.SetThumbnailPrefetch(ThumbnailMode.PicturesView, 150, ThumbnailOptions.ResizeThumbnail);
            var folder = KnownFolders.PicturesLibrary;

            if (!folder.AreQueryOptionsSupported(queryOptions) ||
                !folder.IsCommonFileQuerySupported(CommonFileQuery.OrderByTitle))
            {
                return;
            }

            var query    = folder.CreateFileQueryWithOptions(queryOptions);
            var access   = new FileInformationFactory(query, ThumbnailMode.PicturesView);
            var fileList = access.GetVirtualizedFilesVector();

            MainList.ItemsSource = fileList;
        }
        public MainPage()
        {
            this.InitializeComponent();
            var queryOptions = new QueryOptions
            {
                FolderDepth   = FolderDepth.Deep,
                IndexerOption = IndexerOption.UseIndexerWhenAvailable
            };

            queryOptions.FileTypeFilter.Add(".jpg");
            queryOptions.FileTypeFilter.Add(".png");

            queryOptions.SortOrder.Clear();
            var sortEntry = new SortEntry
            {
                PropertyName   = "System.FileName",
                AscendingOrder = true
            };

            queryOptions.SortOrder.Add(sortEntry);

            var        fileQuery = KnownFolders.PicturesLibrary.CreateFileQueryWithOptions(queryOptions);
            const uint size      = 190;
            var        fileInformationFactory = new FileInformationFactory(fileQuery, ThumbnailMode.PicturesView, size, ThumbnailOptions.UseCurrentScale, true);

            photosViewSource.Source = fileInformationFactory.GetVirtualizedFilesVector();
        }
Esempio n. 3
0
        private async Task ScanFiles()
        {
            var fileTypeFilter = new List <string>
            {
                ".mp3",
                ".flac"
            };
            var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, fileTypeFilter)
            {
                FolderDepth   = FolderDepth.Deep,
                IndexerOption = IndexerOption.DoNotUseIndexer
            };

            // Create query and retrieve files
            var query = KnownFolders.MusicLibrary.CreateFileQueryWithOptions(queryOptions);
            //IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();

            var fif = new FileInformationFactory(query, Windows.Storage.FileProperties.ThumbnailMode.MusicView);

            fil = await fif.GetFilesAsync();

            Debug.WriteLine("Count: " + fil.Count);

            foreach (var fi in fil)
            {
                Debug.WriteLine(fi.Path);
            }
        }
Esempio n. 4
0
        async Task ArchiveMetadatasAsync(FileInformationFactory fileInfoFactory)
        {
            var artistsCache = new Dictionary <string, DbArtist>();
            var albumsCache  = new Dictionary <string, DbAlbum>();

            // Ensure ffmpeg is initialized.
            // TODO: Only initialize ffmpeg from background operation. @RsIncubator
            NativeMethods.InitializeFfmpeg();

            // Index new files together.
            var metadataBag = new ConcurrentBag <MediaMetadata>();
            var fileInfos   = await fileInfoFactory.GetFilesAsync();

            Messenger.Default.Send(new GenericMessage <string>(this, m_scannedCount.ToString()), "IndexItemAdded");
            foreach (var f in fileInfos)
            {
                FillMetadataBagStub(f, metadataBag);
                m_scannedCount++;
                if (m_scannedCount % 30 == 0)
                {
                    Messenger.Default.Send(new GenericMessage <string>(this, m_scannedCount.ToString()), "IndexItemAdded");
                }
            }
            Messenger.Default.Send(new GenericMessage <string>(this, m_scannedCount.ToString()), "IndexItemAdded");
            m_scannedCount = 0;
            await RecordMetadatasAsync(metadataBag.ToArray(), artistsCache, albumsCache);
        }
Esempio n. 5
0
        public async Task InitialScanAsync(FileInformationFactory fileInfoFactory)
        {
            await ArchiveMetadatasAsync(fileInfoFactory);

            // Save database
            await m_dbContext.SaveChangesAsync();
        }
        public void TestFieldQuotedCsv()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, @"State,Population,Shape
MI,""10,000,000"",Mitten
CA,""20,000,000"",Sock,
KS,""9,000,000"",Rectangle");

            var request = new FileInspectionRequest(file);
            var actual  = FileInformationFactory.Create(request, new TestLogger());

            Assert.AreEqual(3, actual.Fields.Count);

            Assert.AreEqual("State", actual.Fields[0].Name);
            Assert.AreEqual("Population", actual.Fields[1].Name);
            Assert.AreEqual("Shape", actual.Fields[2].Name);

            Assert.AreEqual("string", actual.Fields[0].Type);
            Assert.AreEqual("string", actual.Fields[1].Type);
            Assert.AreEqual("string", actual.Fields[2].Type);

            Assert.IsTrue(actual.Fields[0].IsQuoted());
            Assert.IsTrue(actual.Fields[1].IsQuoted());
            Assert.AreEqual('\"', actual.Fields[1].QuotedWith);
            Assert.IsTrue(actual.Fields[2].IsQuoted());

            Assert.AreEqual("1024", actual.Fields[0].Length);
            Assert.AreEqual("1024", actual.Fields[1].Length);
            Assert.AreEqual("1024", actual.Fields[2].Length);
        }
        public void TestIssue001A()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, @"t1,t2,t3,t4
Monday,10,1.1,1/1/2014
Tuesday,11,2.2,2/1/2014
Wednesday,12,3.3,3/1/2014
Thursday,13,4.4,4/1/2014
Friday,14,5.5,5/1/2014
Saturday,15,6.6,6/1/2014");


            var request = new FileInspectionRequest(file)
            {
                DataTypes = new List <string> {
                    "int32", "double", "datetime"
                }
            };
            var information = FileInformationFactory.Create(request, new TestLogger());
            var fields      = new FieldInspector(new TestLogger()).Inspect(information, request).ToArray();

            Assert.AreEqual("string", fields[0].Type);
            Assert.AreEqual("int32", fields[1].Type);
            Assert.AreEqual("double", fields[2].Type);
            Assert.AreEqual("datetime", fields[3].Type);

            //really do it
            //new FileImporter().Import(new FileInfo(file), request);
        }
        public void TestFieldQuotedCsv2()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, @"Field 1,Field 2,Field 3,Field 4,Field 5,Field 6
""0007282100"",""O721"",20,""1111 COUNTY RD 1 SOUTH POINT OH 11111"",,""1""
""0007382201"",""O722"",25,""2222 COUNTY RD 1 SOUTH POINT OH 22222"",,""1""
""0007482302"",""O723"",30,""3333 COUNTY RD 1 SOUTH POINT OH 33333"",,""1""
");
            var info   = FileInformationFactory.Create(file, new TestLogger());
            var actual = new FieldInspector(new TestLogger()).Inspect(info);

            Assert.AreEqual(6, actual.Count);

            Assert.AreEqual("Field 1", actual[0].Name);
            Assert.AreEqual("Field 2", actual[1].Name);
            Assert.AreEqual("Field 3", actual[2].Name);
            Assert.AreEqual("Field 4", actual[3].Name);
            Assert.AreEqual("Field 5", actual[4].Name);
            Assert.AreEqual("Field 6", actual[5].Name);

            Assert.AreEqual("int", actual[0].Type);
            Assert.AreEqual("string", actual[1].Type);
            Assert.AreEqual("int", actual[2].Type);
            Assert.AreEqual("string", actual[3].Type);
            Assert.AreEqual("string", actual[4].Type);
            Assert.AreEqual("int", actual[5].Type);
        }
        public void TestCsvBlanks()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, @"t1,t2,t3,t4,t5
""Monday"",10,""1.1"",1/1/2014,
""Tuesday"",11,""2.2"",2/1/2014,
""Wednesday"",12,""3.3"",3/1/2014,
""Thursday"",13,""4.4"",4/1/2014,
""Friday"",14,,5/1/2014,
""Saturday"",15,,6/1/2014,");

            var request = new FileInspectionRequest(file)
            {
                DataTypes = new List <string> {
                    "int32", "double", "datetime"
                },
                IgnoreEmpty = true
            };
            var information = FileInformationFactory.Create(request, new TestLogger());
            var fields      = new FieldInspector(new TestLogger()).Inspect(information, request).ToArray();

            Assert.AreEqual('"', fields[0].QuotedWith);
            Assert.AreEqual("string", fields[0].Type);
            Assert.AreEqual("int32", fields[1].Type);
            Assert.AreEqual('"', fields[2].QuotedWith);
            Assert.AreEqual("double", fields[2].Type);
            Assert.AreEqual("datetime", fields[3].Type);
            Assert.AreEqual("string", fields[4].Type);
            Assert.AreEqual("1", fields[4].Length);
        }
        public void TestMultipleDelimiters()
        {
            var file = Path.GetTempFileName();

            File.WriteAllText(file, @"f|1,f|2,f|3,f|4,f|5
v|1,v|;2,v|3,v|4,v|5
v|6,v|;7,v|8,v9,v|10,
v|11,v|;12,v|13,v|14,v|15");

            var request = new FileInspectionRequest(file);
            var actual  = FileInformationFactory.Create(request, new TestLogger());

            foreach (
                var delimiter in
                request.Delimiters.Select(p => p.Value)
                .Where(d => d.AveragePerLine > 0)
                .OrderBy(d => d.CoefficientOfVariance()))
            {
                Console.WriteLine("Delimiter: `{0}` CoV: {1} Average: {2} StdDev: {3}", delimiter.Character, delimiter.CoefficientOfVariance(), delimiter.AveragePerLine, delimiter.StandardDeviation);
            }

            Assert.AreEqual(6, actual.Fields.Count);
            Assert.AreEqual('|', actual.Delimiter);

            Assert.AreEqual("A", actual.Fields[0].Name);
            Assert.AreEqual("B", actual.Fields[1].Name);
            Assert.AreEqual("C", actual.Fields[2].Name);
            Assert.AreEqual("D", actual.Fields[3].Name);
            Assert.AreEqual("E", actual.Fields[4].Name);
            Assert.AreEqual("F", actual.Fields[5].Name);
        }
        public void TestCsvWithJustHeaders()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, @"State,Population,Shape");

            var request = new FileInspectionRequest(file);
            var actual  = FileInformationFactory.Create(request, new TestLogger());

            Assert.AreEqual(3, actual.Fields.Count);

            Assert.AreEqual("State", actual.Fields[0].Name);
            Assert.AreEqual("Population", actual.Fields[1].Name);
            Assert.AreEqual("Shape", actual.Fields[2].Name);

            Assert.AreEqual("string", actual.Fields[0].Type);
            Assert.AreEqual("string", actual.Fields[1].Type);
            Assert.AreEqual("string", actual.Fields[2].Type);

            Assert.IsTrue(actual.Fields[0].IsQuoted());
            Assert.IsTrue(actual.Fields[1].IsQuoted());
            Assert.IsTrue(actual.Fields[2].IsQuoted());

            Assert.AreEqual("1024", actual.Fields[0].Length);
            Assert.AreEqual("1024", actual.Fields[1].Length);
            Assert.AreEqual("1024", actual.Fields[2].Length);
        }
        public void TestExcel()
        {
            const string fileName = @"TestFiles\Headers\Headers.xlsx";
            var          request  = new FileInspectionRequest(fileName);
            var          actual   = FileInformationFactory.Create(request, new TestLogger());

            Assert.AreEqual(3, actual.ColumnCount());
            Assert.AreEqual("Header 2", actual.Fields[1].Name);
        }
        public void TestEmptyCsv()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, string.Empty);

            var request = new FileInspectionRequest(file);
            var actual  = FileInformationFactory.Create(request, new TestLogger());

            Assert.AreEqual(0, actual.Fields.Count);
        }
        public void TestSingleColumn()
        {
            const string fileName = @"TestFiles\Headers\Single.txt";
            var          request  = new FileInspectionRequest(fileName);
            var          actual   = FileInformationFactory.Create(request, new TestLogger());

            Assert.AreEqual(default(char), actual.Delimiter);
            Assert.AreEqual(1, actual.ColumnCount());
            Assert.AreEqual("Header 1", actual.Fields[0].Name);
            Assert.AreEqual("1024", actual.Fields[0].Length);
        }
        public void TestCommas()
        {
            const string fileName = @"TestFiles\Headers\Headers.csv";
            var          request  = new FileInspectionRequest(fileName)
            {
                LineLimit = 3
            };
            var actual = FileInformationFactory.Create(request, new TestLogger());

            Assert.AreEqual(',', actual.Delimiter);
            Assert.AreEqual(3, actual.ColumnCount());
            Assert.AreEqual("Header 2", actual.Fields[1].Name);
        }
Esempio n. 16
0
        // Page Loaded
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            // Define the query to iterate thriugh all the subfolders
            var pictureQueryOptions = new QueryOptions();

            // Read only Picture Library folder
            pictureQueryOptions.FolderDepth = FolderDepth.Shallow;

            // Read through all the subfolders
            // pictureQueryOptions.FolderDepth = FolderDepth.Deep;

            // Apply the query on the PicturesLibrary
            var pictureQuery        = KnownFolders.PicturesLibrary.CreateFileQueryWithOptions(pictureQueryOptions);
            var picturesInformation = new FileInformationFactory(pictureQuery, ThumbnailMode.PicturesView);

            picturesSource.Source = picturesInformation.GetVirtualizedFilesVector();
        }
Esempio n. 17
0
        public void TestIssue002B()
        {
            const string file = @"TestFiles\Headers\Issue002.xlsx";

            var request = new FileInspectionRequest(file)
            {
                DataTypes = new List <string> {
                    "int32", "datetime"
                }
            };
            var information = FileInformationFactory.Create(request, new TestLogger());
            var fields      = new FieldInspector(new TestLogger()).Inspect(information, request).ToArray();

            Assert.AreEqual("string", fields[0].Type);
            Assert.AreEqual("int32", fields[1].Type);
            Assert.AreEqual("string", fields[2].Type);
            Assert.AreEqual("datetime", fields[3].Type);
        }
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            var queryOptions = new QueryOptions();

            queryOptions.FolderDepth   = FolderDepth.Deep;
            queryOptions.IndexerOption = IndexerOption.UseIndexerWhenAvailable;
            queryOptions.SortOrder.Clear();
            var sortEntry = new SortEntry();

            sortEntry.PropertyName   = "System.FileName";
            sortEntry.AscendingOrder = true;
            queryOptions.SortOrder.Add(sortEntry);

            var        fileQuery = KnownFolders.PicturesLibrary.CreateFileQueryWithOptions(queryOptions);
            const uint size      = 190; // default size for PicturesView mode
            var        fileInformationFactory = new FileInformationFactory(fileQuery, ThumbnailMode.PicturesView, size, ThumbnailOptions.UseCurrentScale, true);

            itemsViewSource.Source = fileInformationFactory.GetVirtualizedFilesVector();
        }
Esempio n. 19
0
        public void TestFieldQuotedCsv()
        {
            var file = Path.GetTempFileName().Replace(".tmp", ".csv");

            File.WriteAllText(file, @"""State"",""Population"",""Shape""
MI,""10,000,000"",Mitten
CA,""20,000,000"",Sock
KS,""9,000,000"",Rectangle");

            var request = new FileInspectionRequest(file)
            {
                DataTypes = new List <string> {
                    "decimal"
                },
                MinLength = 3
            };
            var fileInformation = FileInformationFactory.Create(request, new TestLogger());
            var actual          = new FieldInspector(new TestLogger()).Inspect(fileInformation, request);

            Assert.AreEqual(3, actual.Count);

            Assert.AreEqual("State", actual[0].Name);
            Assert.AreEqual("Population", actual[1].Name);
            Assert.AreEqual("Shape", actual[2].Name);

            Assert.AreEqual("string", actual[0].Type);
            Assert.AreEqual("decimal", actual[1].Type);
            Assert.AreEqual("string", actual[2].Type);

            Assert.AreEqual('\"', actual[0].QuotedWith);
            Assert.AreEqual('\"', actual[1].QuotedWith);
            Assert.AreEqual('\"', actual[2].QuotedWith);

            Assert.AreEqual("3", actual[0].Length);
            Assert.AreEqual("3", actual[1].Length);
            Assert.AreEqual("10", actual[2].Length);
        }