Example #1
0
        /// <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);
        }
Example #2
0
        // 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);
            }
        }
Example #4
0
        // 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;
        }