Beispiel #1
0
        /**
         * Internal function used to process folders in the dictionary. These values 
         * usually come from the property file. It retrieves the number of files contained, whether or not
         * the folder contains a new file.
         */
        private List<FolderInfo> processFolderList(Dictionary<string, string> folderList)
        {
            List<FolderInfo> toReturn = new List<FolderInfo>();
            Dictionary<String, String> keywords = null;
            JavaScriptSerializer j = new JavaScriptSerializer();
            SpiderWeb.Models.FolderInfo tempInfo;
            string dirName;
            PdfReader pdfReader = null;

            BufferedStream randomAccess = null;
            foreach (KeyValuePair<string, string> entry in folderList)
            {
                dirName = entry.Value;

                FileInfo tempFile = new FileInfo(dirName);
                tempInfo = new SpiderWeb.Models.FolderInfo();
                tempInfo.folderName = dirName.Substring(dirName.LastIndexOf("\\") + 1);
                tempInfo.folderPath = dirName;

                dirName = tempFile.FullName;
                if (!Directory.Exists(dirName) && (dirName.ToUpper().StartsWith(this.data["DRR_DRIVE"] + ":") || dirName.StartsWith("\\\\")))
                {
                    Directory.CreateDirectory(dirName);
                }
                if (Directory.Exists(dirName))
                {
                    string[] allFiles = Directory.GetFiles(dirName, "*pdf");
                    tempInfo.fileCount = allFiles.Length;
                    tempInfo.hasNewFile = false;
                    string openDirectory, currentDirectory;
                    foreach (string fileName in allFiles)
                    {
                        try
                        {

                            randomAccess = new BufferedStream(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), 12288);
                            pdfReader = new PdfReader(randomAccess, null);

                            if (pdfReader.Info.ContainsKey("Keywords"))
                            {
                                keywords = j.Deserialize<Dictionary<String, String>>(getValue(pdfReader.Info, "Keywords"));
                                //keywords = getKeywords(output);
                                /*if (pdfDocument.Metadata != null && pdfDocument.Metadata["Keywords"] != null && pdfDocument.Metadata["Keywords"].ToString().Length > 0)
                                {
                                    keywords = j.Deserialize<Dictionary<String, String>>((string)pdfDocument.Metadata["Keywords"]);*/
                                openDirectory = getValue(keywords, IndividualRFileInfo.OPEN_DIRECTORY);
                                currentDirectory = getValue(keywords, IndividualRFileInfo.CURRENT_DIRECTORY);
                                if (openDirectory != currentDirectory || openDirectory.Length == 0)
                                {
                                    tempInfo.hasNewFile = true;
                                    break;
                                }
                            }
                            else
                            {
                                tempInfo.hasNewFile = true;
                                break;
                            }

                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.StackTrace);
                        }
                        finally
                        {
                            randomAccess.Close();
                            pdfReader.Close();
                            pdfReader.Dispose();
                            pdfReader = null;

                        }
                    }

                    //  allFolders[dirName] = tempInfo;
                }
                dirName = dirName.Substring(dirName.LastIndexOf("\\") + 1);
                tempInfo.alias = entry.Key;

                toReturn.Add(tempInfo);
            }
            return toReturn;
        }
Beispiel #2
0
        /**
      * Internal function used to process folders in the dictionary. These values 
      * usually come from the property file. It retrieves the number of files contained, whether or not
      * the folder contains a new file.
      */
        private List<FolderInfo> processFolderListNotFiles(Dictionary<string, string> folderList)
        {
            List<FolderInfo> toReturn = new List<FolderInfo>();
            
            JavaScriptSerializer j = new JavaScriptSerializer();
            SpiderWeb.Models.FolderInfo tempInfo;
            string dirName;

            foreach (KeyValuePair<string, string> entry in folderList)
            {
                dirName = entry.Value;

                FileInfo tempFile = new FileInfo(dirName);
                tempInfo = new SpiderWeb.Models.FolderInfo();
                tempInfo.folderName = dirName.Substring(dirName.LastIndexOf("\\") + 1);
                tempInfo.folderPath = dirName;

                dirName = tempFile.FullName;
                if (!Directory.Exists(dirName) && (dirName.ToUpper().StartsWith(this.data["DRR_DRIVE"] + ":") || dirName.StartsWith("\\\\")))
                {
                    Directory.CreateDirectory(dirName);
                }
                if (Directory.Exists(dirName))
                {

                    tempInfo.hasNewFile = false;

                }
                dirName = dirName.Substring(dirName.LastIndexOf("\\") + 1);
                tempInfo.alias = entry.Key;

                toReturn.Add(tempInfo);
            }
            return toReturn;
        }