/// <summary>
        /// Erstellt eine neue Planung.
        /// </summary>
        /// <param name="site">Die zugehörige Arbeitsumgebung.</param>
        private RecordingPlanner(IRecordingPlannerSite site)
        {
            // Remember
            m_site = site;

            // Process all profiles
            foreach (var profileName in site.ProfileNames)
            {
                // Look up the profile
                var profile = ProfileManager.FindProfile(profileName);
                if (profile == null)
                {
                    continue;
                }

                // Create the resource for it
                var profileResource = ProfileScheduleResource.Create(profileName);

                // Remember
                m_resources.Add(profileName, profileResource);

                // See if this is a leaf profile
                if (!string.IsNullOrEmpty(profile.UseSourcesFrom))
                {
                    continue;
                }

                // See if we should process guide updates
                var guideTask = site.CreateProgramGuideTask(profileResource, profile);
                if (guideTask != null)
                {
                    m_tasks.Add(guideTask);
                }

                // See if we should update the source list
                var scanTask = site.CreateSourceScanTask(profileResource, profile);
                if (scanTask != null)
                {
                    m_tasks.Add(scanTask);
                }
            }

            // Make sure we report all errors
            try
            {
                // Create the manager
                m_manager = ResourceManager.Create(site.ScheduleRulesPath, ProfileManager.ProfileNameComparer);
            }
            catch (Exception e)
            {
                // Report
                VCRServer.LogError(Properties.Resources.BadRuleFile, e.Message);

                // Use standard rules
                m_manager = ResourceManager.Create(ProfileManager.ProfileNameComparer);
            }

            // Safe configure it
            try
            {
                // All all resources
                foreach (var resource in m_resources.Values)
                {
                    m_manager.Add(resource);
                }
            }
            catch (Exception e)
            {
                // Cleanup
                Dispose();

                // Report
                VCRServer.Log(e);
            }
        }