示例#1
0
        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);
                }
            }
        }
示例#2
0
 public IEpsJob CreateJob(IEpsJobConfig config)
 {
     return(_container.Resolve <EpsJob>(
                new ParameterOverride("config", config)));
 }
示例#3
0
 IEpsJob IEpsJobFactory.CreateJob(IEpsJobConfig config)
 {
     Contract.Requires(config != null);
     Contract.Ensures(Contract.Result <IEpsJob>() != null);
     throw new System.NotImplementedException();
 }