public EpsJob(IEpsJobConfig config, IEpsConfiguration epsConfiguration, IEpsTaskFactory taskFactory, IEpsReportFactory reportFactory) { Contract.Requires(config != null); Contract.Requires(epsConfiguration != null); Contract.Requires(taskFactory != null); Contract.Requires(reportFactory != null); _config = config; _epsConfiguration = epsConfiguration; _taskFactory = taskFactory; _reportFactory = reportFactory; // проверяем var tasks = config.Tasks; if (tasks.Length == 0) { throw new Exception(string.Format("Can't find any task for job {0}.", _config.JobId)); } var unsupportedTypes = tasks.Where(i => i.TaskExecutorType == EpsTaskExecutorTypes.None || i.TaskExecutorType == EpsTaskExecutorTypes.ARCH || i.TaskExecutorType == EpsTaskExecutorTypes.DCL || i.TaskExecutorType == EpsTaskExecutorTypes.WF) .Select(i => i.TaskExecutorType) .Distinct() .ToArray(); if (unsupportedTypes.Length > 0) { throw new Exception(string.Format("Job {0} contains unsupported task types {1}.", _config.JobId, string.Join(";", unsupportedTypes))); } //TODO: разобаться зачем была нужна сортировка TASK-ов по TaskOrder (где это использовалось) Tasks = tasks.Select(i => _taskFactory.CreateTask(i)).ToArray(); Reports = _config.Reports.Select(i => _reportFactory.CreateReport(i)).ToArray(); CheckWorkingFolder(_config.JobId); var exportTypes = Tasks.Where(i => i.ExportType != null).Select(i => i.ExportType).Distinct(); // отмечаем форматы, в которые выгружаем foreach (var exportType in exportTypes) { foreach (var report in Reports) { report.AddExportType(exportType); } } }
public IEpsJob CreateJob(IEpsJobConfig config) { return(_container.Resolve <EpsJob>( new ParameterOverride("config", config))); }
IEpsJob IEpsJobFactory.CreateJob(IEpsJobConfig config) { Contract.Requires(config != null); Contract.Ensures(Contract.Result <IEpsJob>() != null); throw new System.NotImplementedException(); }