Example #1
0
        /// <summary>
        /// Removes the non existing files data.
        /// </summary>
        private void RemoveNonExistingData()
        {
            SystemManager.RunWithElevatedPrivilegeDelegate elevDelegate = (p) =>
            {
                var fileMonitorDataManager = FileMonitorDataManager.GetManager();

                //finds all records containing file paths which no longer exists
                var nonExistingFilesData = fileMonitorDataManager.GetFilesData().Select(fd => fd.FilePath).ToArray()
                                           .Where(f => !File.Exists(f));

                if (nonExistingFilesData != null && nonExistingFilesData.Any())
                {
                    //remove all records in the lists
                    foreach (var filePath in nonExistingFilesData)
                    {
                        //converting the file path to a virtual file path
                        var virtualFilePath = this.ConvertToVirtualPath(filePath);

                        //get the directory tree part from the virtal path
                        var resourceDirectoryTree = VirtualPathUtility.GetDirectory(virtualFilePath).Split('/');

                        //the resource folder is actualy the file parent folder
                        string resourceFolder = resourceDirectoryTree[resourceDirectoryTree.Length - 2];

                        //get the resource file manager depending on its type
                        IFileManager resourceFilesManager = this.GetResourceFileManager(resourceFolder);

                        resourceFilesManager.FileDeleted(filePath);
                    }
                }
            };

            SystemManager.RunWithElevatedPrivilege(elevDelegate);
        }
Example #2
0
        /// <summary>
        /// Removes the non existing files data.
        /// </summary>
        protected virtual void RemoveNonExistingData()
        {
            SystemManager.RunWithElevatedPrivilegeDelegate elevDelegate = (p) =>
            {
                var fileMonitorDataManager = FileMonitorDataManager.GetManager();

                // finds all records containing file paths which no longer exists
                var nonExistingFilesData = fileMonitorDataManager.GetFilesData().Select(fd => fd.FilePath).ToArray()
                                           .Where(f => !HostingEnvironment.VirtualPathProvider.FileExists(f));

                if (nonExistingFilesData != null && nonExistingFilesData.Any())
                {
                    // remove all records in the lists
                    foreach (var filePath in nonExistingFilesData)
                    {
                        var resourceDirectoryTree = VirtualPathUtility.GetDirectory(filePath).Split('/');

                        if (resourceDirectoryTree.Length >= 2)
                        {
                            var          packageFolderIdx     = Array.IndexOf(resourceDirectoryTree, PackageManager.PackagesFolder);
                            string       packageName          = packageFolderIdx > 0 && packageFolderIdx + 1 < resourceDirectoryTree.Length ? resourceDirectoryTree[packageFolderIdx + 1] : string.Empty;
                            string       resourceFolder       = resourceDirectoryTree[resourceDirectoryTree.Length - 2];
                            IFileManager resourceFilesManager = this.GetResourceFileManager(resourceFolder, filePath);
                            resourceFilesManager.FileDeleted(filePath, packageName);
                        }
                    }
                }
            };

            SystemManager.RunWithElevatedPrivilege(elevDelegate);
        }
Example #3
0
        /// <summary>
        /// Removes the non existing files data.
        /// </summary>
        protected virtual void RemoveNonExistingData()
        {
            SystemManager.RunWithElevatedPrivilegeDelegate elevDelegate = (p) =>
            {
                var fileMonitorDataManager = FileMonitorDataManager.GetManager();

                // finds all records containing file paths which no longer exists
                var nonExistingFilesData = fileMonitorDataManager.GetFilesData().Select(fd => fd.FilePath).ToArray()
                                           .Where(f => !File.Exists(f));

                if (nonExistingFilesData != null && nonExistingFilesData.Any())
                {
                    // remove all records in the lists
                    foreach (var filePath in nonExistingFilesData)
                    {
                        var resourceDirectoryTree = VirtualPathUtility.GetDirectory(filePath).Split('/');

                        if (resourceDirectoryTree.Length >= 2)
                        {
                            string       resourceFolder       = resourceDirectoryTree[resourceDirectoryTree.Length - 2];
                            IFileManager resourceFilesManager = this.GetResourceFileManager(resourceFolder);
                            resourceFilesManager.FileDeleted(filePath);
                        }
                    }
                }
            };

            SystemManager.RunWithElevatedPrivilege(elevDelegate);
        }
Example #4
0
        private bool CreateOrUpdateFileData(FileMonitorDataManager dataManager, string fileName, string filePath, string packageName, FileData fileData)
        {
            var changed = false;

            if (fileData == null)
            {
                fileData          = dataManager.CreateFileData();
                fileData.FilePath = filePath;
                changed           = true;
            }

            if (fileData.FileName != fileName)
            {
                fileData.FileName = fileName;
                changed           = true;
            }

            if (fileData.PackageName != packageName)
            {
                fileData.PackageName = packageName;
                changed = true;
            }

            return(changed);
        }
Example #5
0
        /// <summary>
        /// Process the file if such is added to the existing folder.
        /// </summary>
        /// <param name="virtualFilePath">The virtual file path.</param>
        /// <param name="packageName">Name of the package.</param>
        public void FileAdded(string fileName, string filePath, string packageName = "")
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();

            var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(filePath, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

            this.CreateTemplateAndFileData(fileName, filePath, packageName, fileMonitorDataManager, fileData);
        }
Example #6
0
        /// <summary>
        /// Process the file if such is added to the existing folder.
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="filePath"></param>
        /// <param name="packageName">Name of the package.</param>
        public void FileAdded(string fileName, string filePath, string packageName = "")
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();
            var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(filePath, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            this.AddToToolboxAndFileData(fileMonitorDataManager, fileName, filePath, packageName, fileData);
            fileMonitorDataManager.SaveChanges();
        }
Example #7
0
        /// <summary>
        /// Process the file if such is added to the existing folder.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="filePath">The file path.</param>
        /// <param name="fileData">The file data.</param>
        /// <param name="packageName">Name of the package.</param>
        public void FileAdded(string fileName, string filePath, FileData fileData, string packageName = "")
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();

            if (this.AddToToolboxAndFileData(fileMonitorDataManager, fileName, filePath, packageName, fileData))
            {
                fileMonitorDataManager.SaveChanges();
            }
        }
Example #8
0
        /// <summary>
        /// Process the file if such is added to the existing folder.
        /// </summary>
        /// <param name="fileName">The virtual file name.</param>
        /// <param name="filePath">The virtual file path.</param>
        /// <param name="fileData">The file data</param>
        /// <param name="packageName">Name of the package.</param>
        public void FileAdded(string fileName, string filePath, FileData fileData, string packageName = "")
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();

            if (fileData == null && this.CreateTemplateAndFileData(fileName, filePath, packageName, fileMonitorDataManager, ref fileData))
            {
                fileMonitorDataManager.SaveChanges();
            }
        }
Example #9
0
        private bool AddToToolboxAndFileData(FileMonitorDataManager fileMonitorDataManager, string newFileName, string newFilePath, string packageName, FileData fileData, string oldFileName = "")
        {
            if (!this.IsFileValid(newFileName, newFilePath, packageName))
            {
                return(false);
            }

            this.WidgetRegistrator.RegisterToolboxItem(newFileName, oldFileName);

            return(this.CreateOrUpdateFileData(fileMonitorDataManager, newFileName, newFilePath, packageName, fileData));
        }
Example #10
0
        /// <summary>
        /// Reacts on file renaming
        /// </summary>
        /// <param name="newFileName">New name of the file.</param>
        /// <param name="oldFileName">Old name of the file.</param>
        /// <param name="newFilePath"></param>
        /// <param name="oldFilePath"></param>
        /// <param name="packageName">Name of the package.</param>
        public void FileRenamed(string newFileName, string oldFileName, string newFilePath, string oldFilePath, string packageName = "")
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();
            var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(oldFilePath, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            if (this.AddToToolboxAndFileData(fileMonitorDataManager, newFileName, newFilePath, packageName, fileData, oldFileName))
            {
                this.WidgetRegistrator.UpdateControlData(newFileName, oldFileName);
                fileMonitorDataManager.SaveChanges();
            }
        }
Example #11
0
        private void CreateOrUpdateFileData(FileMonitorDataManager dataManager, string fileName, string filePath, string packageName, FileData fileData)
        {
            if (fileData == null)
            {
                fileData = dataManager.CreateFileData();
            }

            fileData.FilePath    = filePath;
            fileData.FileName    = fileName;
            fileData.PackageName = packageName;
        }
Example #12
0
        /// <summary>
        /// Called on file deletion
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="packageName">Name of the package.</param>
        public void FileDeleted(string filePath, string packageName)
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();

            var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(filePath, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

            if (fileData != null)
            {
                fileMonitorDataManager.Delete(fileData);
                fileMonitorDataManager.SaveChanges();
            }
        }
Example #13
0
        /// <summary>
        /// Called on file deletion
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="packageName">Name of the package.</param>
        public void FileDeleted(string filePath, string packageName)
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();
            var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(filePath, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

            if (fileData != null)
            {
                fileMonitorDataManager.Delete(fileData);
                fileMonitorDataManager.SaveChanges();
            }

            this.WidgetRegistrator.UnregisterToolboxItem(this.GetFileName(filePath));
        }
Example #14
0
        /// <summary>
        /// Reacts on file renaming
        /// </summary>
        /// <param name="newFileName">New name of the file.</param>
        /// <param name="oldFileName">Old name of the file.</param>
        /// <param name="newFilePath"></param>
        /// <param name="oldFilePath"></param>
        /// <param name="packageName">Name of the package.</param>
        public void FileRenamed(string newFileName, string oldFileName, string newFilePath, string oldFilePath, string packageName = "")
        {
            var fileMonitorDataManager = FileMonitorDataManager.GetManager();

            var fileData = fileMonitorDataManager.GetFilesData().Where(file => file.FilePath.Equals(oldFilePath, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

            if (fileData != null)
            {
                this.CreateTemplateAndFileData(newFileName, newFilePath, packageName, fileMonitorDataManager, fileData);
            }
            else
            {
                this.FileAdded(newFileName, newFilePath, packageName);
            }
        }
Example #15
0
        /// <summary>
        /// Reacts on file renaming
        /// </summary>
        /// <param name="newFileName">New name of the file.</param>
        /// <param name="oldFileName">Old name of the file.</param>
        /// <param name="newFilePath"></param>
        /// <param name="oldFilePath"></param>
        /// <param name="packageName">Name of the package.</param>
        public void FileRenamed(string newFileName, string oldFileName, string newFilePath, string oldFilePath, string packageName = "")
        {
            var fileMonitorDatamanager = FileMonitorDataManager.GetManager();

            var fileData = fileMonitorDatamanager.GetFilesData().Where(file => file.FilePath.Equals(oldFilePath, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();

            if (fileData != null)
            {
                if (this.IsFileInValidFolder(newFilePath, packageName))
                {
                    string templateName = string.Empty;

                    var extension = newFileName.Split('.').LastOrDefault();

                    var fileNameWithoutExtension = newFileName.Substring(0, newFileName.Length - (extension.Length + 1));

                    var viewFileExtensions = this.GetViewExtensions();

                    if (viewFileExtensions.Contains(extension, StringComparer.InvariantCultureIgnoreCase))
                    {
                        if (string.IsNullOrEmpty(packageName))
                        {
                            templateName = fileNameWithoutExtension;
                        }
                        else
                        {
                            templateName = packageName + "." + fileNameWithoutExtension;
                        }

                        fileData.FilePath = newFilePath;
                        fileData.FileName = newFileName;

                        fileMonitorDatamanager.SaveChanges();

                        this.CreateTemplate(templateName);
                    }
                }
            }
            else
            {
                this.FileAdded(newFileName, newFilePath, packageName);
            }
        }
Example #16
0
        /// <summary>
        /// Processes all files under a directory, including subfolders.
        /// </summary>
        /// <param name="dirInfo">The directory information.</param>
        private void ProcessDirecotryFiles(DirectoryInfo dirInfo)
        {
            var files = dirInfo.GetFiles("*", SearchOption.AllDirectories);

            var fileManager   = FileMonitorDataManager.GetManager();
            var fileDatasList = fileManager.GetFilesData().ToList();

            foreach (var file in files)
            {
                try
                {
                    var virtualFilePath = this.ConvertToVirtualPath(file.FullName);

                    // Get the file monitoring data for the files that are already monitored. If the file data exist we don't have to create new monitoring for this file.
                    var fileData = fileDatasList.Where(x => x.FilePath.Equals(virtualFilePath, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

                    this.FileChanged(file.FullName, FileChangeType.Created, fileData: fileData);
                }
                catch (IOException ex)
                {
                    Log.Write(string.Format(System.Globalization.CultureInfo.InvariantCulture, "Exception occurred while processing the file named {0}, details: {1}", file.Name, ex));
                }
            }
        }
Example #17
0
        private void CreateOrUpdateFileData(FileMonitorDataManager dataManager, string fileName, string filePath, string packageName, FileData fileData)
        {
            if (fileData == null)
                fileData = dataManager.CreateFileData();

            fileData.FilePath = filePath;
            fileData.FileName = fileName;
            fileData.PackageName = packageName;
        }
Example #18
0
        private void AddToToolboxAndFileData(FileMonitorDataManager fileMonitorDataManager, string newFileName, string newFilePath, string packageName, FileData fileData, string oldFileName = "")
        {
            if (!this.IsFileValid(newFileName, newFilePath, packageName))
                return;

            this.WidgetRegistrator.RegisterToolboxItem(newFileName, oldFileName);

            this.CreateOrUpdateFileData(fileMonitorDataManager, newFileName, newFilePath, packageName, fileData);
        }
Example #19
0
        /// <summary>
        /// Creates the template and file data.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="filePath">The file path.</param>
        /// <param name="packageName">Name of the package.</param>
        /// <param name="fileMonitorDataManager">The file monitor data manager.</param>
        /// <param name="fileData">The file data.</param>
        /// <returns></returns>
        private bool CreateTemplateAndFileData(string fileName, string filePath, string packageName, FileMonitorDataManager fileMonitorDataManager, ref FileData fileData)
        {
            var absolutePath = FrontendManager.VirtualPathBuilder.MapPath(filePath);

            if (this.IsFileInValidFolder(absolutePath, packageName))
            {
                var extension = fileName.Split('.').LastOrDefault();
                var fileNameWithoutExtension = fileName.Substring(0, fileName.Length - (extension.Length + 1));

                var viewFileExtensions = this.GetViewExtensions();

                if (viewFileExtensions.Contains(extension, StringComparer.Ordinal))
                {
                    var changed = false;
                    if (fileData == null)
                    {
                        fileData             = fileMonitorDataManager.CreateFileData();
                        fileData.FilePath    = filePath;
                        fileData.FileName    = fileName;
                        fileData.PackageName = packageName;
                        changed = true;
                    }
                    else
                    {
                        if (fileData.FilePath != filePath)
                        {
                            fileData.FilePath = filePath;
                            changed           = true;
                        }

                        if (fileData.FileName != fileName)
                        {
                            fileData.FileName = fileName;
                            changed           = true;
                        }

                        if (fileData.PackageName != packageName)
                        {
                            fileData.PackageName = packageName;
                            changed = true;
                        }
                    }

                    if (changed)
                    {
                        this.CreateTemplate(packageName, fileNameWithoutExtension);
                        return(true);
                    }
                }
            }

            return(false);
        }
        /// <summary>
        /// Creates the template and file data.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="filePath">The file path.</param>
        /// <param name="packageName">Name of the package.</param>
        /// <param name="fileMonitorDataManager">The file monitor data manager.</param>
        /// <param name="fileData">The file data.</param>
        private void CreateTemplateAndFileData(string fileName, string filePath, string packageName, FileMonitorDataManager fileMonitorDataManager, FileData fileData)
        {
            var absolutePath = FrontendManager.VirtualPathBuilder.MapPath(filePath);

            if (!this.IsFileInValidFolder(absolutePath, packageName))
                return;

            var extension = fileName.Split('.').LastOrDefault();
            var fileNameWithoutExtension = fileName.Substring(0, fileName.Length - (extension.Length + 1));

            var viewFileExtensions = this.GetViewExtensions();

            if (viewFileExtensions.Contains(extension, StringComparer.Ordinal))
            {
                if (fileData == null)
                    fileData = fileMonitorDataManager.CreateFileData();

                fileData.FilePath = filePath;
                fileData.FileName = fileName;
                fileData.PackageName = packageName;

                fileMonitorDataManager.SaveChanges();

                this.CreateTemplate(packageName, fileNameWithoutExtension);
            }
        }
Example #21
0
        /// <summary>
        /// Creates the template and file data.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="filePath">The file path.</param>
        /// <param name="packageName">Name of the package.</param>
        /// <param name="fileMonitorDataManager">The file monitor data manager.</param>
        /// <param name="fileData">The file data.</param>
        private void CreateTemplateAndFileData(string fileName, string filePath, string packageName, FileMonitorDataManager fileMonitorDataManager, FileData fileData)
        {
            if (!this.IsFileInValidFolder(filePath, packageName))
                return;

            var extension = fileName.Split('.').LastOrDefault();
            var fileNameWithoutExtension = fileName.Substring(0, fileName.Length - (extension.Length + 1));

            var viewFileExtensions = this.GetViewExtensions();

            if (viewFileExtensions.Contains(extension, StringComparer.Ordinal))
            {
                string templateTitle = string.Empty;

                if (string.IsNullOrEmpty(packageName))
                    templateTitle = fileNameWithoutExtension;
                else
                    templateTitle = packageName + "." + fileNameWithoutExtension;

                if (fileData == null)
                    fileData = fileMonitorDataManager.CreateFileData();

                fileData.FilePath = filePath;
                fileData.FileName = fileName;
                fileData.PackageName = packageName;

                fileMonitorDataManager.SaveChanges();

                this.CreateTemplate(templateTitle);
            }
        }
Example #22
0
        /// <summary>
        /// Creates the template and file data.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="filePath">The file path.</param>
        /// <param name="packageName">Name of the package.</param>
        /// <param name="fileMonitorDataManager">The file monitor data manager.</param>
        /// <param name="fileData">The file data.</param>
        private void CreateTemplateAndFileData(string fileName, string filePath, string packageName, FileMonitorDataManager fileMonitorDataManager, FileData fileData)
        {
            var absolutePath = FrontendManager.VirtualPathBuilder.MapPath(filePath);

            if (!this.IsFileInValidFolder(absolutePath, packageName))
            {
                return;
            }

            var extension = fileName.Split('.').LastOrDefault();
            var fileNameWithoutExtension = fileName.Substring(0, fileName.Length - (extension.Length + 1));

            var viewFileExtensions = this.GetViewExtensions();

            if (viewFileExtensions.Contains(extension, StringComparer.Ordinal))
            {
                string templateTitle = string.Empty;

                if (string.IsNullOrEmpty(packageName))
                {
                    templateTitle = fileNameWithoutExtension;
                }
                else
                {
                    templateTitle = packageName + "." + fileNameWithoutExtension;
                }

                if (fileData == null)
                {
                    fileData = fileMonitorDataManager.CreateFileData();
                }

                fileData.FilePath    = filePath;
                fileData.FileName    = fileName;
                fileData.PackageName = packageName;

                fileMonitorDataManager.SaveChanges();

                this.CreateTemplate(templateTitle);
            }
        }