/// <summary> /// Saves operation. /// </summary> /// <param name="generator">Reports generator.</param> /// <param name="descriptions">Report state description.</param> private void _DoSave(ReportsGenerator generator, IList <ReportStateDescription> descriptions) { Debug.Assert(null != generator); Debug.Assert(null != descriptions); Debug.Assert(0 < descriptions.Count); try { string exportDir = null; string fileName = null; string fileExt = null; // get export settings if (1 == descriptions.Count) { // get settings for one file _GetExportOutputSettings(descriptions[0].ReportName, out exportDir, out fileName, out fileExt); } else { // get settings for files Debug.Assert(1 < descriptions.Count); _GetExportOutputSettings(out exportDir, out fileExt); } // export reports if (!string.IsNullOrEmpty(exportDir) && !string.IsNullOrEmpty(fileExt)) { IDocumentExport exporter = ReportsHelpers.GetExporterByFileExtension(fileExt); // do save export files List <MessageDetail> details = new List <MessageDetail>(); for (int index = 0; index < descriptions.Count; ++index) { ReportStateDescription description = descriptions[index]; MessageDetail detail = _DoSaveReport(exporter, exportDir, fileName, fileExt, generator, description); if (null != detail) { details.Add(detail); } } // export done - show messages string infoMessage = App.Current.FindString("ReportPreviewTopLevelSaveDone"); string errorMessage = App.Current.FindString("ReportPreviewTopLevelSaveFail"); _PopulateMessages(errorMessage, infoMessage, details); } } catch (Exception ex) { _DoSaveInitExceptionRoutine(ex); } }
/////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /// <summary> /// Gets exporter object by identificator. /// </summary> /// <param name="identificator">Export type identificator (name or file extension).</param> /// <returns>Unifed document exporter.</returns> private static IDocumentExport _GetExporter(string identificator) { Debug.Assert(!string.IsNullOrEmpty(identificator)); IDocumentExport export = null; // select export format type switch (identificator) { case EXPORT_EXTENSION_HTM: case EXPORT_TYPE_NAME_HTM: export = new HtmlExport(); break; case EXPORT_EXTENSION_PDF: case EXPORT_TYPE_NAME_PDF: export = new PdfExport(); break; case EXPORT_EXTENSION_RTF: case EXPORT_TYPE_NAME_RTF: export = new RtfExport(); break; case EXPORT_EXTENSION_TIF: case EXPORT_TYPE_NAME_TIF: export = new TiffExport(); break; case EXPORT_EXTENSION_TXT: case EXPORT_TYPE_NAME_TXT: export = new TextExport(); break; case EXPORT_EXTENSION_XLS: case EXPORT_TYPE_NAME_XLS: export = new XlsExport(); break; default: Debug.Assert(false); // NOTE: not supported break; } return(export); }
/// <summary> /// Saves report routine. /// </summary> /// <param name="exporter">Exporter object.</param> /// <param name="exportDir">Export directory.</param> /// <param name="fileName">Export report file name (can be null).</param> /// <param name="fileExt">Export file extension.</param> /// <param name="generator">Report generator.</param> /// <param name="description">Report state descriiption.</param> /// <returns>Status messages.</returns> private MessageDetail _DoSaveReport(IDocumentExport exporter, string exportDir, string fileName, string fileExt, ReportsGenerator generator, ReportStateDescription description) { Debug.Assert(null != exporter); Debug.Assert(null != generator); Debug.Assert(null != description); Debug.Assert((null != exportDir) && (null != fileExt)); MessageDetail detail = null; string fullFileName = null; try { string filename = (string.IsNullOrEmpty(fileName)) ? _ValidateFileName(description.ReportName) : fileName; fullFileName = Path.Combine(exportDir, filename + fileExt); if (null == description.Report) { generator.RunReport(description); } exporter.Export(description.Report.Document, fullFileName); string message = App.Current.GetString("ReportPreviewSaveDoneFormat", description.ReportName, fullFileName); detail = new MessageDetail(MessageType.Information, message); } catch (Exception ex) { string message = App.Current.GetString("ReportPreviewSaveFailFormat", description.ReportName, fullFileName); detail = _DoExceptionRoutine(message, ex, generator, description); } return(detail); }
public ExportWrapper(IDocumentExport docExp, string name) { _docExp = docExp; _name = name; }
/// <summary> /// Saves report routine. /// </summary> /// <param name="exporter">Exporter object.</param> /// <param name="exportDir">Export directory.</param> /// <param name="fileName">Export report file name (can be null).</param> /// <param name="fileExt">Export file extension.</param> /// <param name="generator">Report generator.</param> /// <param name="description">Report state descriiption.</param> /// <returns>Status messages.</returns> private MessageDetail _DoSaveReport(IDocumentExport exporter, string exportDir, string fileName, string fileExt, ReportsGenerator generator, ReportStateDescription description) { Debug.Assert(null != exporter); Debug.Assert(null != generator); Debug.Assert(null != description); Debug.Assert((null != exportDir) && (null != fileExt)); MessageDetail detail = null; string fullFileName = null; try { string filename = (string.IsNullOrEmpty(fileName)) ? _ValidateFileName(description.ReportName) : fileName; fullFileName = Path.Combine(exportDir, filename + fileExt); if (null == description.Report) generator.RunReport(description); exporter.Export(description.Report.Document, fullFileName); string message = App.Current.GetString("ReportPreviewSaveDoneFormat", description.ReportName, fullFileName); detail = new MessageDetail(MessageType.Information, message); } catch (Exception ex) { string message = App.Current.GetString("ReportPreviewSaveFailFormat", description.ReportName, fullFileName); detail = _DoExceptionRoutine(message, ex, generator, description); } return detail; }