/// <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); }
/// <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); }
/// <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); }
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); }
/// <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); }
/// <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(); }
/// <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(); } }
/// <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(); } }
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)); }
/// <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(); } }
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; }
/// <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(); } }
/// <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)); }
/// <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); } }
/// <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); } }
/// <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)); } } }
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; }
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); }
/// <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); } }
/// <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); } }
/// <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); } }