Exemplo n.º 1
0
        /// <summary>
        /// Обработка файлов задачи.
        /// !!! Вызывать только после обработки параметров задачи !!!
        /// </summary>
        /// <param name="reports">отчеты</param>
        public void ProcessFiles(EpsFastReport[] reports)
        {
            if (reports != null && reports.Length > 0 && _exportType != null)
            {
                foreach (var epsFastReport in reports)
                {
                    if (epsFastReport == null)
                    {
                        continue;
                    }

                    var extension = GetParamValue <string>(EpsTaskParams.FileExtension);
                    extension = string.IsNullOrEmpty(extension)
                        ? EpsHelper.GetFileExtension(_exportType.Format)
                        : extension.TrimStart('.');

                    if (string.IsNullOrEmpty(extension))
                    {
                        throw new Exception(string.Format("Неопределено расширение файла для формата '{0}'.", _exportType.Format));
                    }

                    var    resultReportFile = Sb.Substitute(epsFastReport.ReportName);
                    byte[] data;

                    if (Archiver == null)
                    {
                        data = epsFastReport.GetExportStream(_exportType);
                    }
                    else
                    {
                        data = Archiver.ArchiveStreamToStream(epsFastReport.GetExportStream(_exportType),
                                                              resultReportFile + "." + extension,
                                                              Properties.Settings.Default.CompressionLevel);
                    }

                    Files.Add(extension.Length > 0
                        ? new FileStruct(data, resultReportFile, extension, Ziped)
                        : new FileStruct(data, resultReportFile, Ziped));
                }
            }
            else //Если отчетов нет, то проверяем парметр EpsTaskParams.SourceFolder
            {
                if (FindByName(EpsTaskParams.SourceFolder) == null)
                {
                    throw new Exception("SourceFolder parameter not found.");
                }
            }

            var fileList = FilePumper.GetFileList();

            if (FilePumper.PumperState)
            {
                if (fileList == null)
                {
                    return;
                }

                foreach (var f in fileList)
                {
                    var data = (Archiver != null)
                        ? Archiver.ArchiveStreamToStream(FilePumper.GetFile(f), Path.GetFileName(f), Properties.Settings.Default.CompressionLevel)
                        : FilePumper.GetFile(f);

                    Files.Add(new FileStruct(data, f, Ziped));
                }
            }
            else
            {
                throw new Exception("Could not get source files.");
            }
        }