예제 #1
0
        private void FetchSourceDetails()
        {
            var importId = ImportToolkit.SearchImportInfo(PartItem);

            if (importId == null || String.IsNullOrEmpty(importId.Distributor))
            {
                HasDistributor = false;
                return;
            }

            HasDistributor = true;
            Distributor    = importId.Distributor;

            if (!Config.Manager.EnableViewItemSource)
            {
                HasSource = false;
                return;
            }

            var source = SourceLocator.GetSourceByLocation(importId.SourceLocation);

            HasSource = SourceInvoker.IsInvokable(source, PartItem.SourceArgument);
            if (HasSource)
            {
                InvokeSource.ExecuteAction = () => SourceInvoker.Invoke(source, PartItem.SourceArgument);
            }
        }
예제 #2
0
        public override void Run()
        {
            var targetPath    = Arguments.First(ArgumentsDictionary.Import).Value;
            var ruleId        = Arguments.First(ArgumentsDictionary.RuleId).Value;
            var transactionId = Arguments.First(ArgumentsDictionary.ImportId).Value;

            var target = new FileSourceProfile
            {
                FilePath = targetPath,
                TransactionIdentificator = transactionId,
                RuleIdentificatorString  = ruleId
            };

            Console.WriteLine(@"Импорт из произвольного источника");
            Console.WriteLine(@"Источник: " + target.Source.Location);
            Console.WriteLine(@"Правило: " + target.Rule.Name + " (" + target.Rule.Identificator + ")");
            Console.WriteLine(@"Идентификатор: " + target.TransactionIdentificator);

            _task = ImportToolkit.CreateImportTask(target);
            _task.StageChanged    += TaskStageChanged;
            _task.ProgressChanged += TaskProgressChanged;
            _task.Interrupted     += TaskOnInterrupted;
            _task.Started         += TaskStarted;
            _task.Finished        += TaskFinished;

            _taskWaitHandle = new AutoResetEvent(false);
            _task.Start();
            //Console.WriteLine("Подготовка");

            _taskWaitHandle.WaitOne();
        }
예제 #3
0
        protected override void PrepareRoutine()
        {
            if (_profile.CleanBeforeImport)
            {
                ImportToolkit.DropTransaction(_profile.TransactionIdentificator);
            }

            _importIdentificator = ImportToolkit.CreateImportIdentificator(_profile);

            if (_profile.EmbedSource)
            {
                var blob = BlobToolkit.CreateFromFile(_profile.Source.File, _importIdentificator);
                _profile = new EmbeddedSourceProfile
                {
                    BlobName          = blob.Name,
                    CleanBeforeImport = _profile.CleanBeforeImport,
                    EmbedSource       = _profile.EmbedSource,
                    Guid = Guid.NewGuid(),
                    RuleIdentificatorString  = _profile.Rule.Identificator,
                    TransactionIdentificator = _profile.TransactionIdentificator,
                    Distributor = _profile.Distributor
                };

                _importIdentificator = ImportToolkit.CreateImportIdentificator(_profile);
            }

            // ToDo: не только ITableRule!
            _sourceReader = new BufferedSourceReader(_profile.Source, _profile.Rule as ITableRule);
            _sourceReader.Open();

            _itemsWriter = new BufferedItemsWriter(_importIdentificator);

            GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
        }
예제 #4
0
        private void StartImpl()
        {
            var presets = PresetTargets.Where(t => t.IsSelected).Select(t => t.Target).Cast <FileSourceProfile>();
            var customs = CustomTargets.Select(t => new FileSourceProfile()
            {
                FilePath = t.FilePath,
                RuleIdentificatorString = t.Rule.Identificator
            });

            var task = ImportToolkit.CreateImportTask(presets.Concat(customs));
            var vm   = new ImportProgressViewModel(task);

            App.Window.NavigateModal(new ImportProgressPage(vm));
            vm.Start();
        }
예제 #5
0
        public override void Run()
        {
            Console.WriteLine(@"Удаление записей");

            if (!Arguments.Has(ArgumentsDictionary.IKnowWhatImDoing))
            {
                if (!RequestAck(@"Данные будут удалены."))
                {
                    Console.WriteLine(@"Отменено пользователем");
                    return;
                }
            }
            ImportToolkit.DropTransaction();
            Console.WriteLine(@"Данные удалены.");
        }
예제 #6
0
        public override void Run()
        {
            var id = Arguments.First(ArgumentsDictionary.DropImport).Value;

            if (String.IsNullOrEmpty(id))
            {
                Console.WriteLine("Отсутствует идентификатор импорта");
            }

            Console.WriteLine("Удаление импорта с идентификатором " + id);

            if (!Arguments.Has(ArgumentsDictionary.IKnowWhatImDoing))
            {
                if (!RequestAck(@"Данные будут удалены."))
                {
                    Console.WriteLine(@"Отменено пользователем");
                    return;
                }
            }
            ImportToolkit.DropTransaction(id);
            Console.WriteLine(@"Данные удалены.");
        }
예제 #7
0
        public override void Run()
        {
            var sourceId = Arguments.First(ArgumentsDictionary.ImportSource).Value;
            var target   = TargetsLocator.Targets.First(t => t.TransactionIdentificator == sourceId);

            Console.WriteLine(@"Импорт источника " + target.TransactionIdentificator);
            Console.WriteLine(@"Источник: " + target.Source.Location);
            Console.WriteLine(@"Правило: " + target.Rule.Name + " (" + target.Rule.Identificator + ")");
            Console.WriteLine(@"Идентификатор: " + target.TransactionIdentificator);

            _task = ImportToolkit.CreateImportTask(target);
            _task.StageChanged    += TaskStageChanged;
            _task.ProgressChanged += TaskProgressChanged;
            _task.Interrupted     += TaskOnInterrupted;
            _task.Started         += TaskStarted;
            _task.Finished        += TaskFinished;

            _taskWaitHandle = new AutoResetEvent(false);
            _task.Start();
            Console.WriteLine("Подготовка");

            _taskWaitHandle.WaitOne();
        }