Beispiel #1
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            _importLibraryDirectory = Path.GetDirectoryName(ImportLibraryFilename);

            Initialize(ImportLibraryFilename);
            sequence.Add(new Task(() => CreateIDConversionTable()));
            sequence.Add(new Task(() => ImportAuthors(LibraryManager.Value)));
            sequence.Add(new Task(() => ImportTags(LibraryManager.Value)));
            sequence.AddRange(GenerateTasksToImportBooks(LibraryManager.Value));
            sequence.Add(new Task(() => DropIDConversionTable()));
            sequence.Add(new Task(() => EndProcess()));
        }
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            sequence.Add(new Task(() => s_logger.Info($"Begin to Calculate Book ByteSize.")));

            var books = Range.FindBook(LibraryManager.Value);

            sequence.Add(new Task(() => s_logger.Info($"Found : {books.Count()}")));

            foreach (var book in books)
            {
                sequence.AddRange(GenerateTasksToCalcBook(LibraryManager.Value, book));
            }

            sequence.Add(new Task(() => s_logger.Info($"Finished to Calculate Book ByteSize.")));
        }
Beispiel #3
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            List <Importer> importers = new List <Importer>();

            DiscriminateDroppedEntries(ObjectPaths, importers, LibraryManager.Value);

            var workingDirectory = Configuration.ApplicationConfiguration.WorkingDirectory;
            var now    = DateTime.Now;
            var copyTo = workingDirectory + "\\"
                         + MasterDirectory + "\\"
                         + now.Year + "\\"
                         + now.Month.ToString("00") + "\\"
                         + now.Day.ToString("00");

            //保存先ディレクトリ準備
            if (!Directory.Exists(copyTo))
            {
                Directory.CreateDirectory(copyTo);
                s_logger.Debug($"Create directory:{copyTo}");
            }

            List <Importer> willNotImport = new List <Importer>();

            //構造把握+全体数計上
            foreach (var task in importers)
            {
                task.Estimate();
                if (task.Count == 0)
                {
                    willNotImport.Add(task);
                }
            }

            //メタデータ分析
            foreach (var task in importers)
            {
                if (task is ImportIllust)
                {
                    var importer = task as ImportIllust;
                    importer.Title = DateTime.Now.ToString("yyyyMMddHHmmss");
                }
                else if (task is ImportBook)
                {
                    var importer = task as ImportBook;

                    string sourceDirName = ((File.GetAttributes(importer.Path) & FileAttributes.Directory) == FileAttributes.Directory)
                                            ? Path.GetFileName(importer.Path)
                                            : Path.GetDirectoryName(importer.Path);

                    var dirNameParser = DirectoryNameParserManager.Get(sourceDirName);
                    dirNameParser.Parse(sourceDirName);

                    if (dirNameParser.HasTags)
                    {
                        importer.TagNames = dirNameParser.Tags;
                    }

                    if (dirNameParser.HasAuthor)
                    {
                        importer.AuthorName = dirNameParser.Author;
                    }

                    importer.Title = dirNameParser.Title;
                }
            }

            //画像0件のインポート単位はインポートしない
            foreach (var task in willNotImport)
            {
                importers.Remove(task);
                s_logger.Warn($"{task.Path} will not be imported.");
            }

            sequence.Add(new System.Threading.Tasks.Task(() => s_logger.Info($"Began to import.")));
            for (int i = 0; i < importers.Count(); ++i)
            {
                var  task = importers.ElementAt(i);
                Guid entryNameSeedGuid = Guid.NewGuid();
                var  entryName         = entryNameSeedGuid.ToString("N");
                var  t = task.GenerateTasks(LibraryManager.Value, copyTo, entryName, null, (importer, bookvm) =>
                {
                    bookvm.CurrentProcessProgress.Value.Count.Value      = importer.Processed;
                    bookvm.CurrentProcessProgress.Value.TotalCount.Value = importer.Count;
                });
                sequence.AddRange(t);
            }
            sequence.Add(new System.Threading.Tasks.Task(() => s_logger.Info($"Completed to import.")));
        }