/// <summary> /// Erstellt eine neue Planung. /// </summary> /// <param name="site">Die zugehörige Arbeitsumgebung.</param> /// <returns>Die gewünschte Planungsumgebung.</returns> public static RecordingPlanner Create(IRecordingPlannerSite site) { // Validate if (site == null) { throw new ArgumentNullException(nameof(site)); } // Forward return(new RecordingPlanner(site)); }
/// <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); } }
/// <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 ); } }
/// <summary> /// Erstellt eine neue Planung. /// </summary> /// <param name="site">Die zugehörige Arbeitsumgebung.</param> /// <returns>Die gewünschte Planungsumgebung.</returns> public static RecordingPlanner Create( IRecordingPlannerSite site ) { // Validate if (site == null) throw new ArgumentNullException( nameof( site ) ); // Forward return new RecordingPlanner( site ); }