Ejemplo n.º 1
0
        private bool ZipReports(string zipPath, string[] outputFiles)
        {
            executor.Invoke("Information: Zipping reports for filing package.");

            string rootDirectoryName = string.Empty;

            for (int i = 0; i < outputFiles.Length; i++)
            {
                if (string.IsNullOrEmpty(rootDirectoryName))
                {
                    rootDirectoryName = Path.GetDirectoryName(outputFiles[i]);
                    outputFiles[i]    = Path.GetFileName(outputFiles[i]);
                }
                else if (!outputFiles[i].StartsWith(rootDirectoryName))
                {
                    executor.Invoke("Error: Zip creation failed.");
                    return(false);
                }
                else
                {
                    outputFiles[i] = Path.GetFileName(outputFiles[i]);
                }
            }

            if (ZipUtilities.TryZipAndCompressFiles(zipPath, rootDirectoryName, outputFiles))
            {
                executor.Invoke("Information: Zip successfully created." + separator + "\tLocation: " + zipPath);
                return(true);
            }
            else
            {
                executor.Invoke("Error: Zip creation failed.");
                return(false);
            }
        }
Ejemplo n.º 2
0
        private void ZipFiles(DirectoryInfo directory, string zipName)
        {
            output op = new output(compare.Output);

            string[] fileNames = BuildString(directory.GetFiles());

            try
            {
                ZipUtilities.TryZipAndCompressFiles(zipName, directory.FullName, fileNames);
            }
            catch (Exception ex)
            {
                op(string.Format(Program.zipCopyErr, zipName, ex.Message));
            }
        }
Ejemplo n.º 3
0
        protected bool BuildReports(FilingInfo filing, string reportsFolder, out string error)
        {
            error = null;

            bool   foundFiles = true;
            string errorMsg   = string.Empty;

            string filingPath        = Path.Combine(filing.ParentFolder, filing.AccessionNumber);
            string filingReportsPath = Path.Combine(filingPath, "Reports");
            string filingErrorFile   = Path.Combine(filingReportsPath, ERROR_FILE_NAME);

            string instancePath = filing.GetInstanceDocPath();
            string taxonomyPath = filing.GetTaxonomyPath();

            if (string.IsNullOrEmpty(instancePath) ||
                !File.Exists(instancePath))
            {
                errorMsg = string.Format("Can not find instance document for filing: {0}", filing.AccessionNumber);
                FilingProcessorManager.TheMgr.WriteLogEntry(errorMsg, EventLogEntryType.Error);
                foundFiles = false;
            }
            else if (string.IsNullOrEmpty(taxonomyPath) ||
                     !File.Exists(taxonomyPath))
            {
                errorMsg = string.Format("Can not find taxonomy file for filing: {0}", filing.AccessionNumber);
                FilingProcessorManager.TheMgr.WriteLogEntry(errorMsg, EventLogEntryType.Error);
                foundFiles = false;
            }

            bool buildSucceeded = false;

            if (foundFiles)
            {
                string baseResourcePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                FilingProcessorManager.TheMgr.WriteLogEntry(string.Format("Setting base path for Rules Engine. Path: {0}", baseResourcePath), EventLogEntryType.Information);

                RulesEngineUtils.SetBaseResourcePath(baseResourcePath);
                ReportBuilder.SetSynchronizedResources(true);

                FilingProcessorManager.TheMgr.WriteLogEntry("Selected rule file: '" + FinancialRuleFile + "' for instance document: '" + Path.GetFileName(instancePath) + "'", EventLogEntryType.Information);

                ReportBuilder rb = new ReportBuilder(FinancialRuleFile, ReportFormat, HtmlReportFormat);
                rb.CurrencyMappingFile   = CurrencyMappingFile;
                rb.RemoteFileCachePolicy = RemoteFileCachePolicy;

                //if( XmlCatalog != null )
                //	rb.XmlCatalog = XmlCatalog;

                //Reports will be saves under the Filing's Processing folder then copied out to the actual reports folder,
                //this will allow us to only copy complete sets of R files to the Reports Folder.
                string filingSummaryFile = string.Format("{0}{1}{2}", filingReportsPath, Path.DirectorySeparatorChar, FilingSummary.FilingSummaryXmlName);

                //Make sure there is a clean folder where the reports will be written to.
                if (Directory.Exists(filingReportsPath))
                {
                    Directory.Delete(filingReportsPath, true);
                }

                Directory.CreateDirectory(filingReportsPath);
                FilingSummary summary = null;
                buildSucceeded = rb.BuildReports(instancePath, taxonomyPath, filingSummaryFile, filingReportsPath, out summary, out error);

                if (!buildSucceeded)
                {
                    errorMsg = string.Format("Call to BuildReports failed for Filing {0}: {1}", filing.AccessionNumber, error);
                    FilingProcessorManager.TheMgr.WriteLogEntry(errorMsg, EventLogEntryType.Error);

                    if (!Directory.Exists(filingReportsPath))
                    {
                        Directory.CreateDirectory(filingReportsPath);
                    }

                    File.WriteAllText(filingErrorFile, errorMsg);
                }
            }
            else
            {
                if (!Directory.Exists(filingReportsPath))
                {
                    Directory.CreateDirectory(filingReportsPath);
                }

                File.WriteAllText(filingErrorFile, errorMsg);
            }

            try
            {
                string errorFileName   = filing.AccessionNumber + "_" + Path.GetFileName(filingErrorFile);
                string reportErrorFile = Path.Combine(reportsFolder, errorFileName);
                string reportZipFile   = Path.Combine(reportsFolder, filing.AccessionNumber + ".zip");
                if (File.Exists(reportErrorFile))
                {
                    FileUtilities.DeleteFile(new FileInfo(reportErrorFile), true);
                }

                if (File.Exists(reportZipFile))
                {
                    FileUtilities.DeleteFile(new FileInfo(reportZipFile), true);
                }

                if (buildSucceeded)
                {
                    string[] filePathsToZip = Directory.GetFiles(filingReportsPath);
                    string[] filesToZip     = new string[filePathsToZip.Length];
                    for (int i = 0; i < filesToZip.Length; i++)
                    {
                        filesToZip[i] = Path.GetFileName(filePathsToZip[i]);
                    }

                    string zipFile = Path.Combine(filingReportsPath, filing.AccessionNumber + ".zip");
                    if (ZipUtilities.TryZipAndCompressFiles(zipFile, filingReportsPath, filesToZip))
                    {
                        File.Copy(zipFile, reportZipFile);
                    }
                }
                else
                {
                    File.Copy(filingErrorFile, reportErrorFile);
                }

                if (DeleteProcessedFilings)
                {
                    DirectoryInfo di = new DirectoryInfo(filingPath);
                    FileUtilities.DeleteDirectory(di, true, true);

                    di = new DirectoryInfo(filing.ParentFolder);
                    if (di.GetDirectories().Length == 0 && di.GetFiles().Length == 0)
                    {
                        FileUtilities.DeleteDirectory(di, true, true);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }

            if (buildSucceeded)
            {
                FilingProcessorManager.TheMgr.IncrementCompletedCount();
            }

            return(buildSucceeded);
        }