public string SaveReportAs(Report report, string fileName, string format, IProgressMonitor progressMonitor) { var file = string.Empty; using (progressMonitor.BeginTask("Generating report", 100)) { var folderName = Path.GetDirectoryName(fileName); var reportContainer = new FileSystemReportContainer(folderName, Path.GetFileNameWithoutExtension(fileName)); var reportWriter = reportManager.CreateReportWriter(report, reportContainer); if (progressMonitor.IsCanceled) throw new OperationCanceledException(); // Delete the report if it already exists reportContainer.DeleteReport(); if (progressMonitor.IsCanceled) throw new OperationCanceledException(); progressMonitor.Worked(10); // Format the report var reportFormatterOptions = new ReportFormatterOptions(); using (var subProgressMonitor = progressMonitor.CreateSubProgressMonitor(90)) reportManager.Format(reportWriter, format, reportFormatterOptions, subProgressMonitor); if (progressMonitor.IsCanceled) throw new OperationCanceledException(); if (reportWriter.ReportDocumentPaths.Count > 0) file = Path.Combine(folderName, reportWriter.ReportDocumentPaths[0]); } return file; }
public static FileInfo GetHtmlFormattedReport(string sessionId, bool condensed) { IDiskCacheGroup group = GetReportCacheGroup(sessionId); string directory = condensed ? "Condensed" : "Full"; FileInfo htmlReportFile = group.GetFileInfo(Path.Combine(directory, HtmlReportFileName)); if (!htmlReportFile.Exists) { Report report = LoadSerializedReport(sessionId); if (report == null) return null; group.CreateSubdirectory(directory); IReportManager reportManager = RuntimeAccessor.ServiceLocator.Resolve<IReportManager>(); FileSystemReportContainer reportContainer = new FileSystemReportContainer(htmlReportFile.DirectoryName, ReportBaseName); IReportWriter reportWriter = reportManager.CreateReportWriter(report, reportContainer); var reportFormatterOptions = new ReportFormatterOptions(); reportManager.Format(reportWriter, condensed ? "Html-Condensed" : "Html", reportFormatterOptions, NullProgressMonitor.CreateInstance()); } return htmlReportFile; }
public void ConstructorTreatsEmptyDirectoryAsWorkingDirectory() { FileSystemReportContainer container = new FileSystemReportContainer("", "foo"); Assert.AreEqual(Environment.CurrentDirectory + Path.DirectorySeparatorChar, container.ReportDirectory); }
public string ConvertSavedReport(string fileName, string format, IProgressMonitor progressMonitor) { using (progressMonitor.BeginTask("Converting saved report", 100)) { var reportContainer = new FileSystemReportContainer(Path.GetDirectoryName(fileName), Path.GetFileNameWithoutExtension(fileName)); var reportReader = reportManager.CreateReportReader(reportContainer); Report report; using (var subProgressMonitor = progressMonitor.CreateSubProgressMonitor(20)) report = reportReader.LoadReport(true, subProgressMonitor); var tempFilePath = SpecialPathPolicy.For<ReportService>().CreateTempDirectoryWithUniqueName().FullName; using (var subProgressMonitor = progressMonitor.CreateSubProgressMonitor(80)) return SaveReportAs(report, tempFilePath, format, subProgressMonitor); } }