Beispiel #1
0
        /// <summary>選択されたファイルによって、フォームを表示する</summary>
        private void ShowShelf()
        {
            this.shelfDictionary.Clear();
            foreach (string filePath in Settings.Default.Shelfs)
            {
                string title = string.Empty;
                try
                {
                    var targetShelf = new ShelfModel();
                    targetShelf = targetShelf.ReadJson(filePath);
                    title       = String.IsNullOrEmpty(targetShelf.Title) ? filePath : targetShelf.Title;

                    this.shelfDictionary.Add(filePath, title);
                }
                catch (Exception)
                {
                }

                this.ShelfListBox.Items.Clear();
                foreach (var k in this.shelfDictionary.Values)
                {
                    this.ShelfListBox.Items.Add(k);
                }
            }
        }
Beispiel #2
0
        /// <summary>ベースフォルダが指定されている場合、ベースフォルダを検索し、登録されていないデータを新たに登録します</summary>
        /// <param name="baseFolderPath">ベースフォルダリスト</param>
        /// <exception cref="DirectoryNotFoundException">ベースフォルダが存在しない。または指定されていない</exception>
        public static void SyncBaseFolder(string baseFolderPath)
        {
            shelf = shelf.ReadJson(baseFolderPath);
            Array.ForEach(shelf.Books.ToArray(), b => b.Status = AnalyzeResult.NotRunning);
            foreach (var b in shelf.Books.Where(b => sortedbooks.ContainsKey(b.Hash)))
            {
                sortedbooks.Add(b.Hash, b);
            }

            // ファイルの検索と除外処理
            var syncPaths = new HashSet <string>(shelf.Books.Select(b => b.FilePath.ToLower()).OrderBy(v => v));
            IEnumerable <string> files = GetAllFiles(baseFolderPath, "*").AsParallel();

            files = files.Where(f => extensions.Contains(Path.GetExtension(f).ToLower()));
            var count = files.Count();

            files = files.Where(f => !syncPaths.Contains(f.ToLower()));
            Console.WriteLine($"ファイル>書籍ファイル総数:{count},新規・変更数:{files.Count()}");

            foreach (var filePath in files)
            {
                var book = new BookModel(filePath);
                book = CheckHash(book);
                Console.WriteLine($"{LabelAttributeUtils.GetLabelName(book.Status)}>{book.FilePath}");
            }

            var books = shelf.Books.Where(b => b.Status == AnalyzeResult.NotRunning);

            foreach (var book in books)
            {
                if (!book.FileExists())
                {
                    book.Status = AnalyzeResult.FileNotFound;
                    Console.WriteLine($"{LabelAttributeUtils.GetLabelName(book.Status)}>{book.FilePath}");
                }
            }

            shelf.WriteJson();
        }