Пример #1
0
        private void importTask(ArchiveTask archTask)
        {
            models.Task task = new models.Task(archTask);
            task.save();
            List <Entity> temps = new List <Entity>();

            foreach (ArchiveTemplate archTemp in archTask.Templates)
            {
                TaskTemplate temp = new TaskTemplate(archTemp);
                temp.TaskID = task.ID;
                temps.Add(temp);
            }
            DatabaseManager.SharedManager.insertMultipleEntities(temps);
            foreach (ArchiveTemplate archTemp in archTask.Templates)
            {
                archTemp.ID = temps[archTask.Templates.IndexOf(archTemp)].ID;
                importSelectionsAndParameters(archTemp);
            }
            List <Entity> solvers = new List <Entity>();

            foreach (ArchiveTaskSolver archSolv in archTask.Solvers)
            {
                TaskSolver solv = new TaskSolver(archSolv);
                solv.TaskID = task.ID;
                solvers.Add(solv);
            }
            DatabaseManager.SharedManager.insertMultipleEntities(solvers);
            foreach (ArchiveTaskSolver archSolv in archTask.Solvers)
            {
                archSolv.ID = solvers[archTask.Solvers.IndexOf(archSolv)].ID;
            }
        }
Пример #2
0
        ArchiveTask[] CreateArgsForCompressionAndMetaForImage(out Collection <MetaRecord> metarecords)
        {
            metarecords = new Collection <MetaRecord>();
            Collection <CompressionItem> compressionItems = _task.FilesFoldersList;
            var parametersSet = new ArchiveTask[_task.FilesFoldersList.Count];

            int syncIndex = 0;
            int itemIndex = 0;

            foreach (CompressionItem item in compressionItems)
            {
                // Compression item
                string tempFileName;
                do
                {
                    tempFileName = Directories.TempFolder + @"\butil_tmp_" + syncIndex.ToString(CultureInfo.InvariantCulture) + ".7z";
                    syncIndex   += 1;
                }while(!_temporaryFiles.TryRegisterNewName(tempFileName));

                parametersSet[itemIndex] = _task.EnableEncryption ? new ArchiveTask(_options.ProcessPriority, tempFileName, item, _task.SecretPassword) : new ArchiveTask(_options.ProcessPriority, tempFileName, item);

                // Metainformation
                var record = new MetaRecord(item.IsFolder, item.Target);
                record.LinkedFile = tempFileName;
                metarecords.Add(record);
                itemIndex++;
            }

            return(parametersSet);
        }
Пример #3
0
 public Task Handle(ArchiveTask message, IMessageHandlerContext context)
 {
     log.Info($"newTask, ZipPath = {message.ZipPath}");
     _taskManager.ArchiveSite(message);
     MarkAsComplete();
     return(Task.CompletedTask);
 }
Пример #4
0
        public async Task SagaTest()
        {
            //Arrange
            SagaTask saga = new SagaTask(_mockTaskManager)
            {
                Data = new PlaceSagaTask()
            };
            var context   = new TestableMessageHandlerContext();
            var placeTask = new PlaceTask()
            {
                TaskId = 1
            };
            var zipTask = new ArchiveTask()
            {
                TaskId  = placeTask.TaskId,
                ZipPath = ""
            };

            _mockTaskManager.Stub(t => t.DownloadSite(placeTask.TaskId)).Return(zipTask);
            //Act
            await saga.Handle(placeTask, context)
            .ConfigureAwait(false);

            var stage1 = (ArchiveTask)context.SentMessages[0].Message;

            await saga.Handle(zipTask, context)
            .ConfigureAwait(false);

            var stage2 = (ArchiveTask)context.SentMessages[0].Message;

            //Assert
            _mockTaskManager.AssertWasCalled(t => t.DownloadSite(stage1.TaskId));
            _mockTaskManager.AssertWasCalled(t => t.ArchiveSite(stage1));
            Assert.AreEqual(placeTask.TaskId, stage2.TaskId);
        }
Пример #5
0
        private void DumpFileToArchive(string[] files, Action <IEnumerable <FileInfo>, string> archive, Func <string, bool, DirectoryInfoCache, PerfCounter, Dumper> createDumper, DirectoryInfoCache workingDir, string outputExtension, string sourceExtension)
        {
            if (EnableAutoLogging)
            {
                // use parent of pdf/epub folder.
                _counter.SetOutputFolder(workingDir.Item.Parent.FullName);
            }

            using (var uwAll = _counter.UsingWatch("All"))
            {
                foreach (string file in files)
                {
                    bool   isJapanese = IsJapanese(file);
                    Dumper gen        = createDumper(file, isJapanese, workingDir, _counter);
                    gen.EnableAutoLogging = EnableAutoLogging;
                    if (DialogResult.OK != new ProgressDialog(gen.LongTask, _counter).ShowDialog(this))
                    {
                        // MessageBox.Show("generate html cancelled");
                        // tmp fall through.
                        // return;
                    }
                }

                using (var uwArchive = _counter.UsingWatch("Archive"))
                {
                    ArchiveTask archiveTask = new ArchiveTask(workingDir, archive, outputExtension);
                    archiveTask.SourceExtension = sourceExtension;
                    if (DialogResult.OK != new ProgressDialog(archiveTask, _counter).ShowDialog(this))
                    {
                        MessageBox.Show("generate epub cancelled");
                        return;
                    }
                }
            }
            if (EnableAutoLogging)
            {
                _counter.DumpToLog();
            }
        }
Пример #6
0
        private void DumpFileToArchive(string[] files, Action<IEnumerable<FileInfo>, string> archive, Func<string, bool, DirectoryInfoCache, PerfCounter, Dumper> createDumper, DirectoryInfoCache workingDir, string outputExtension, string sourceExtension)
        {
            if (EnableAutoLogging)
            {
                // use parent of pdf/epub folder.
                _counter.SetOutputFolder(workingDir.Item.Parent.FullName);
            }

            using (var uwAll = _counter.UsingWatch("All"))
            {
                foreach (string file in files)
                {
                    bool isJapanese = IsJapanese(file);
                    Dumper gen = createDumper(file, isJapanese, workingDir, _counter);
                    gen.EnableAutoLogging = EnableAutoLogging;
                    if (DialogResult.OK != new ProgressDialog(gen.LongTask, _counter).ShowDialog(this))
                    {
                        // MessageBox.Show("generate html cancelled");
                        // tmp fall through.
                        // return;
                    }
                }

                using (var uwArchive = _counter.UsingWatch("Archive"))
                {
                    ArchiveTask archiveTask = new ArchiveTask(workingDir, archive, outputExtension);
                    archiveTask.SourceExtension = sourceExtension;
                    if (DialogResult.OK != new ProgressDialog(archiveTask, _counter).ShowDialog(this))
                    {
                        MessageBox.Show("generate epub cancelled");
                        return;
                    }
                }
            }
            if (EnableAutoLogging)
                _counter.DumpToLog();
        }
Пример #7
0
 public void ArchiveSite(ArchiveTask task)
 {
     _zipProvider.Zip(task.ZipPath, task.TaskId);
 }
        public Archive generateArchiveSystem()
        {
            scenarioRelations.Clear();
            selectionRelations.Clear();
            taskSolverRelations.Clear();
            Archive       archive = new Archive();
            List <Entity> tasks   = models.Task.all(typeof(models.Task));

            foreach (models.Task task in tasks)
            {
                ArchiveTask         archTask  = new ArchiveTask(task);
                List <TaskTemplate> templates = TaskTemplate.templatesOfTaskId(task.ID);
                foreach (TaskTemplate template in templates)
                {
                    ArchiveTemplate  archTemp   = new ArchiveTemplate(template);
                    List <Selection> selections = Selection.selectionsOfTaskTemplateId(template.ID);
                    foreach (Selection sel in selections)
                    {
                        ArchiveSelection archSel = new ArchiveSelection(sel);
                        selectionRelations.Add(new RelationExport(sel.ID, archSel));
                        archTemp.Selections.Add(archSel);
                    }
                    List <Parameter> parameters = Parameter.parametersOfTaskTemplateId(template.ID);
                    foreach (Parameter par in parameters)
                    {
                        ArchiveParameter archPar = new ArchiveParameter(par);
                        archTemp.Parameters.Add(archPar);
                    }
                    archTask.Templates.Add(archTemp);
                }
                List <TaskSolver> solvers = TaskSolver.solversOfTaskId(task.ID);
                foreach (TaskSolver solver in solvers)
                {
                    ArchiveTaskSolver archSol = new ArchiveTaskSolver(solver);
                    taskSolverRelations.Add(new RelationExport(solver.ID, archSol));
                    archTask.Solvers.Add(archSol);
                }
                archive.Tasks.Add(archTask);
            }
            List <Entity> scenarios = LearningScenario.all(typeof(LearningScenario));

            foreach (LearningScenario scenario in scenarios)
            {
                ArchiveScenario archScenario = new ArchiveScenario(scenario);
                scenarioRelations.Add(new RelationExport(scenario.ID, archScenario));
                archive.Scenarios.Add(archScenario);
            }
            List <Entity> lSolvers = LearnedSolver.all(typeof(LearnedSolver));

            foreach (LearnedSolver solver in lSolvers)
            {
                ArchiveLearnedSolver   archSol   = new ArchiveLearnedSolver(solver);
                List <LearningQuality> quailties = LearningQuality.qualitiesOfSolverId(solver.ID);
                foreach (LearningQuality quality in quailties)
                {
                    ArchiveLearningQuality archQ = new ArchiveLearningQuality(quality);
                    archSol.Qualities.Add(archQ);
                }
                var find = taskSolverRelations.Find(x => x.ID == solver.TaskSolverID);
                archSol.TaskSolver = (find != null) ? (ArchiveTaskSolver)find.model : null;
                find = selectionRelations.Find(x => x.ID == solver.SelectionID);
                archSol.Selection = (find != null) ? (ArchiveSelection)find.model : null;
                find             = scenarioRelations.Find(x => x.ID == solver.LearningScenarioID);
                archSol.Scenario = (find != null) ? (ArchiveScenario)find.model : null;
                archive.LearnedSolvers.Add(archSol);
            }
            return(archive);
        }