Ejemplo n.º 1
0
        private static bool UnzipPackage(UpdateStatusExecutor executor, Filing f, string zipPath, out string[] zipFiles)
        {
            zipFiles = new string[0];

            string errorMsg;

            if (!ZipUtilities.TryUnzipAndUncompressFiles(f.InstancePath, zipPath, out zipFiles, out errorMsg))
            {
                executor.Invoke("Error: The ZIP file cannot be opened.");
                executor.Invoke("\tSkipping filing: " + f.InstancePath);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        private static bool UnzipPackage(Filing f, string zipPath, out string[] zipFiles)
        {
            zipFiles = new string[0];

            string errorMsg;

            if (!ZipUtilities.TryUnzipAndUncompressFiles(f.InstancePath, zipPath, out zipFiles, out errorMsg))
            {
                Console.WriteLine("Error: The ZIP file cannot be opened.");
                Console.WriteLine("\tSkipping filing: " + f.InstancePath);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 3
0
        private bool UnzipMove(DirectoryInfo directory, out string[] files, out string error)
        {
            //Directory passed should be \Reports
            bool retval = true;

            FileInfo[] zipped = directory.GetFiles("*.zip");
            files = null;
            error = string.Empty;
            string fileName = string.Empty;

            try
            {
                foreach (FileInfo zip in zipped)
                {
                    fileName = zip.Name;
                    fileName = fileName.Remove(fileName.Length - 4);
                    ZipUtilities.TryUnzipAndUncompressFiles(zip.FullName,
                                                            zip.Directory.Parent.FullName + "\\Comparison\\" + fileName,
                                                            out files, out error);
                }
            }
            catch (System.Security.SecurityException ex)
            {
                error = "Failed proccess report with the following exception: " + ex.Message;
                RLogger.Error(error, ex);
                retval = false;
            }
            catch (UnauthorizedAccessException ex)
            {
                error = "Failed proccess report with the following exception: " + ex.Message;
                RLogger.Error(error, ex);
                retval = false;
            }
            catch (PathTooLongException ex)
            {
                error = "Failed proccess report with the following exception: " + ex.Message;
                RLogger.Error(error, ex);
                retval = false;
            }
            catch (Exception ex)
            {
                error = "Failed proccess report with the following exception: " + ex.Message;
                RLogger.Error(error, ex);
                retval = false;
            }
            return(retval);
        }
Ejemplo n.º 4
0
        public bool TryMoveFilingsToProcessingFolder(out List <FilingInfo> filings)
        {
            filings = new List <FilingInfo>();

            FileInfo[] zipFiles = FilingProcessorManager.TheMgr.FilingsFolderInfo.GetFiles("*.zip", SearchOption.TopDirectoryOnly);
            Array.Sort(zipFiles, (left, right) => DateTime.Compare(left.CreationTime, right.CreationTime));

            Guid          batchId = Guid.NewGuid();
            DirectoryInfo processingBatchFolder = FilingProcessorManager.TheMgr.ProcessingFolderInfo.CreateSubdirectory(batchId.ToString());

            foreach (FileInfo zipFile in zipFiles)
            {
                string filingName = Path.GetFileNameWithoutExtension(zipFile.Name);
                if (string.IsNullOrEmpty(filingName))
                {
                    try
                    {
                        string errorFile    = Path.Combine(FilingProcessorManager.TheMgr.ReportsFolderInfo.FullName, "UNKNOWN.txt");
                        string errorMessage = "Cannot process a filing zip which has no base name.";
                        FilingProcessorManager.TheMgr.WriteLogEntry(errorMessage, EventLogEntryType.Error);
                        File.WriteAllText(errorFile, errorMessage);
                        zipFile.Delete();
                    } catch { }

                    continue;
                }

                DirectoryInfo filingProcessingFolder = processingBatchFolder.CreateSubdirectory(filingName);

                string[] unzippedFiles;
                string   filingZipFile = string.Format("{0}{1}{2}", filingProcessingFolder.FullName, Path.DirectorySeparatorChar, Path.GetFileName(zipFile.Name));

                if (filingRetryCount.ContainsKey(filingName) &&
                    filingRetryCount[filingName] >= maxUnzipAttempts)
                {
                    filingRetryCount.Remove(filingName);

                    //We have failed to extract the filing multiple times, stop trying to make it work,
                    //remove the zip file from the filing folder, log an error in the reports folder,
                    //and reomve the entry from the dictionary
                    string errorFilename = filingName + "_" + ERROR_FILE_NAME;
                    string errorFile     = Path.Combine(FilingProcessorManager.TheMgr.ReportsFolderInfo.FullName, filingName);

                    string errorMsg = string.Format("Cannot extract files for filing {0}.  The max number of retries has been reached, removing the zip file from the Filings folder. ", Path.GetFileNameWithoutExtension(zipFile.FullName));
                    if (File.Exists(errorFile))
                    {
                        FileUtilities.DeleteFile(new FileInfo(errorFile), true);
                    }
                    FilingProcessorManager.TheMgr.WriteLogEntry(errorMsg, EventLogEntryType.Error);
                    File.WriteAllText(errorFile, errorMsg);

                    zipFile.CopyTo(filingZipFile);
                    FileUtilities.DeleteFile(zipFile, true);
                }
                else
                {
                    string zipError;
                    if (ZipUtilities.TryUnzipAndUncompressFiles(zipFile.FullName, filingProcessingFolder.FullName, out unzippedFiles, out zipError))
                    {
                        FilingInfo filing = new FilingInfo();
                        filing.AccessionNumber = filingProcessingFolder.Name;
                        filing.ParentFolder    = processingBatchFolder.FullName;
                        filings.Add(filing);

                        zipFile.CopyTo(filingZipFile, true);
                        FileUtilities.DeleteFile(zipFile, true);

                        //SEC0145 - Only queue one filing at a time
                        break;
                    }
                    else
                    {
                        //Delete the folder from the processing batch folder sense it doesn't contain a valid filing
                        FileUtilities.DeleteDirectory(filingProcessingFolder, true, true);
                        if (!filingRetryCount.ContainsKey(filingName))
                        {
                            filingRetryCount.Add(filingName, 0);
                        }
                        filingRetryCount[filingName]++;
                        FilingProcessorManager.TheMgr.WriteLogEntry(string.Format("Can not extract files for filing {0}.  The zip file may not be complete. ", Path.GetFileNameWithoutExtension(zipFile.FullName)), EventLogEntryType.Warning);
                    }
                }
            }

            if (processingBatchFolder.GetDirectories().Length == 0)
            {
                //There were not any valid filings in this batch, remove the batch folder
                FileUtilities.DeleteDirectory(processingBatchFolder, true, true);
            }

            return(true);
        }