示例#1
0
        /// <summary>
        /// Execute the current stage and return the next import stage.
        /// If the next stage is null, it means the last stage was executed.
        /// </summary>
        private IBaseFileImportStage ProcessStage(IBaseFileImportStage currentImportStage, ImportParameters parameters)
        {
            ChangeImportStage(parameters, currentImportStage.StageId);
            WriteFileImportLog(FileImportLogMessageType.StartStage, parameters);
            var nextStage = currentImportStage?.ProcessStage(parameters);

            WriteFileImportLog(FileImportLogMessageType.EndStage, parameters);
            return(nextStage);
        }
 /// <inheritdoc cref="BaseFileImporter"/>
 protected override void Import(ImportParameters parameters)
 {
     _currentImportStage = ImportStageFactory.CreateImportStage(parameters.ImportStage, UserConnection, ColumnsProcessor);
     while ((_currentImportStage = _currentImportStage?.ProcessStage(parameters)) != null)
     {
         if (ImportParametersRepository.GetIsImportSessionCanceled(parameters.ImportSessionId))
         {
             DeleteImportParameters(parameters.ImportSessionId);
             throw new OperationCanceledException();
         }
         else
         {
             SaveCurrentStage(parameters);
         }
     }
     SaveParametersToCache(parameters);
 }