/// <summary> /// Returns all user defined import paths /// </summary> public static List <DBImportPath> GetAllUserDefined() { List <DBImportPath> paths = new List <DBImportPath>(); foreach (DBImportPath path in DBImportPath.GetAll()) { if (!path.InternallyManaged) { paths.Add(path); } } return(paths); }
// Gets the corresponding DBImportPath object using it's FullPath property public static DBImportPath Get(string fullPath) { DBField pathField = DBField.GetField(typeof(DBImportPath), "FullPath"); ICriteria criteria = new BaseCriteria(pathField, "like", fullPath); List <DBImportPath> resultSet = mvCentralCore.DatabaseManager.Get <DBImportPath>(criteria); if (resultSet.Count > 0) { return(resultSet[0]); } DBImportPath newImportPath = new DBImportPath(); newImportPath.FullPath = fullPath; return(newImportPath); }
// Update System Managed Import Paths public static void UpdateImportPaths() { // remove obsolete or invalid import paths foreach (DBImportPath currPath in DBImportPath.GetAll()) { if (currPath.Directory == null) { currPath.Delete(); } if (currPath.InternallyManaged && currPath.GetDriveType() == DriveType.NoRootDirectory) { currPath.Delete(); logger.Info("Removed system managed import path: {0} (drive does not exist)", currPath.FullPath); } // Automatically remove import paths that were marked as replaced and don't have any related media (left) if (currPath.Replaced) { // get related local media (we append % so we get all paths starting with the import path) List <DBLocalMedia> attachedLocalMedia = DBLocalMedia.GetAll(currPath.FullPath + "%"); if (attachedLocalMedia.Count == 0) { currPath.Delete(); logger.Info("Removed import path: {0} (was marked as replaced and doesn't have any related files)", currPath.FullPath); } } } float count = 0; float total = DriveInfo.GetDrives().Length; bool daemonEnabled = mvCentralCore.MediaPortalSettings.GetValueAsBool("daemon", "enabled", false); string virtualDrive = mvCentralCore.MediaPortalSettings.GetValueAsString("daemon", "drive", "?:"); // Get all drives foreach (DriveInfo drive in DriveInfo.GetDrives()) { if (MaintenanceProgress != null) { MaintenanceProgress("", (int)(count * 100 / total)); } count++; // Add the import path if it does not exist and // is not marked virtual by MediaPortal. DBImportPath importPath = DBImportPath.Get(drive.Name); bool isVirtual = drive.Name.StartsWith(virtualDrive, StringComparison.OrdinalIgnoreCase) && daemonEnabled; bool isCDRom = (drive.DriveType == DriveType.CDRom); if (importPath.ID != null) { // Remove an system managed path if for any reason it's not of type CDRom if (!isCDRom && importPath.InternallyManaged) { importPath.Delete(); logger.Info("Removed system managed import path: {0} (drive type has changed)", importPath.FullPath); continue; } // Remove an existing path if it's defined as the virtual drive if (isVirtual) { importPath.Delete(); logger.Info("Removed import path: {0} (drive is marked as virtual)", importPath.FullPath); continue; } // Update an existing import path to a system managed import path // if the drive type is CDRom but the system flag isn't set if (isCDRom && !importPath.InternallyManaged) { importPath.InternallyManaged = true; importPath.Commit(); logger.Info("{0} was updated to a system managed import path.", importPath.FullPath); } } else { if (isCDRom && !isVirtual) { importPath.InternallyManaged = true; importPath.Commit(); logger.Info("Added system managed import path: {0}", importPath.FullPath); } } } if (MaintenanceProgress != null) { MaintenanceProgress("", 100); } }
// Gets the corresponding DBImportPath object using it's FullPath property public static DBImportPath Get(string fullPath) { DBField pathField = DBField.GetField(typeof(DBImportPath), "FullPath"); ICriteria criteria = new BaseCriteria(pathField, "like", fullPath); List<DBImportPath> resultSet = mvCentralCore.DatabaseManager.Get<DBImportPath>(criteria); if (resultSet.Count > 0) return resultSet[0]; DBImportPath newImportPath = new DBImportPath(); newImportPath.FullPath = fullPath; return newImportPath; }