Example #1
0
 public TBook(TBook book) : this()
 {
     RelativePath = book.RelativePath;
     Name         = book.Name;
     Number       = book.Number;
     foreach (KeyValuePair <int, string> CollectionNameComponentItem in book.CollectionNameComponents)
     {
         CollectionNameComponents.Add(CollectionNameComponentItem.Key, CollectionNameComponentItem.Value);
     }
     BookType = book.BookType;
     Pages.Clear();
     foreach (TPage PageItem in book.Pages)
     {
         Pages.Add(PageItem);
     }
 }
Example #2
0
        private void _ImportFolder(string folder, TParsingParameters parsingParameters)
        {
            #region Validate parameters
            if (string.IsNullOrWhiteSpace(folder))
            {
                Trace.WriteLine("Unable to import empty folder");
                return;
            }

            string FolderFullPath = Path.GetFullPath(folder);
            if (!Directory.Exists(FolderFullPath))
            {
                Trace.WriteLine($"Unable to access directory \"{folder}\" : directory is missing or access is denied.");
                return;
            }
            #endregion Validate parameters

            TParsingParameters LocalParsingParameters   = new TParsingParameters(parsingParameters);
            string             BdIndexParameterFilename = Path.Combine(folder, "bdindex.json");
            if (File.Exists(BdIndexParameterFilename))
            {
                LocalParsingParameters.Load(BdIndexParameterFilename);
            }

            DirectoryInfo FolderInfo = new DirectoryInfo(FolderFullPath);

            IEnumerable <DirectoryInfo> InnerDirectories = FolderInfo.EnumerateDirectories();
            IEnumerable <FileInfo>      InnerFiles       = FolderInfo.EnumerateFiles()
                                                           .Where(f => TBook.Extensions.Contains(f.Extension.ToLower()));

            #region Folder as book or folder as group
            foreach (DirectoryInfo DirectoryItem in InnerDirectories)
            {
                IEnumerable <FileInfo> PageFiles = DirectoryItem.EnumerateFiles()
                                                   .Where(f => TPage.Extensions.Contains(f.Extension.ToLower()));
                if (PageFiles.Any())
                {
                    #region Found a book as a folder
                    TBook NewBook = new TBook(DirectoryItem.Name, LocalParsingParameters, EBookType.folder, DirectoryItem.FullName.After(RootPath));
                    //Trace.WriteLine(NewBook.ToString());
                    Books.Add(NewBook);
                    #endregion Found a book as a folder
                }
                else
                {
                    #region Dig deeper into directories
                    _ImportFolder(DirectoryItem.FullName, LocalParsingParameters);
                    #endregion Dig deeper into directories
                }
            }
            #endregion Folder as book or folder as group

            #region Archived files as books
            if (InnerFiles.Any())
            {
                foreach (FileInfo FileItem in InnerFiles)
                {
                    TBook NewBook = new TBook(FileItem.Name, LocalParsingParameters, EBookType.unknown, FileItem.FullName.After(RootPath).BeforeLast(@"\"));
                    Books.Add(NewBook);
                }
            }
            #endregion Archived files as books
        }