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