Merge with Kayone.

This commit is contained in:
Mark McDowall 2011-06-16 20:46:14 -07:00
commit 1f0e71c68e
25 changed files with 669 additions and 320 deletions

View file

@ -3,14 +3,10 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Ninject;
using NLog;
using NzbDrone.Core.Helpers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Repository.Quality;
using PetaPoco;
using SubSonic.Repository;
using TvdbLib.Data;
namespace NzbDrone.Core.Providers
@ -18,22 +14,19 @@ namespace NzbDrone.Core.Providers
public class SeriesProvider
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
private readonly IRepository _repository;
private readonly ConfigProvider _configProvider;
private readonly TvDbProvider _tvDbProvider;
private readonly IDatabase _database;
private readonly QualityProvider _qualityProvider;
private readonly SceneNameMappingProvider _sceneNameMappingProvider;
private static readonly Regex TimeRegex = new Regex(@"^(?<time>\d+:?\d*)\W*(?<meridiem>am|pm)?", RegexOptions.IgnoreCase | RegexOptions.Compiled);
[Inject]
public SeriesProvider(ConfigProvider configProviderProvider, IRepository repository,
TvDbProvider tvDbProviderProvider, IDatabase database,
QualityProvider qualityProvider, SceneNameMappingProvider sceneNameMappingProvider)
public SeriesProvider(IDatabase database, ConfigProvider configProviderProvider, QualityProvider qualityProvider,
TvDbProvider tvDbProviderProvider, SceneNameMappingProvider sceneNameMappingProvider)
{
_configProvider = configProviderProvider;
_repository = repository;
_tvDbProvider = tvDbProviderProvider;
_database = database;
_configProvider = configProviderProvider;
_tvDbProvider = tvDbProviderProvider;
_qualityProvider = qualityProvider;
_sceneNameMappingProvider = sceneNameMappingProvider;
}
@ -104,7 +97,7 @@ namespace NzbDrone.Core.Providers
repoSeries.Monitored = true; //New shows should be monitored
repoSeries.QualityProfileId = qualityProfileId;
if (qualityProfileId == 0)
repoSeries.QualityProfileId = Convert.ToInt32(_configProvider.GetValue("DefaultQualityProfile", "1", true));
repoSeries.QualityProfileId = Convert.ToInt32(_configProvider.GetValue("DefaultQualityProfile", "1"));
repoSeries.SeasonFolder = _configProvider.UseSeasonFolder;
@ -131,30 +124,29 @@ namespace NzbDrone.Core.Providers
public virtual void DeleteSeries(int seriesId)
{
Logger.Warn("Deleting Series [{0}]", seriesId);
var series = _repository.Single<Series>(seriesId);
var series = GetSeries(seriesId);
Logger.Warn("Deleting Series [{0}]", series.Title);
//Delete Files, Episodes, Seasons then the Series
//Can't use providers because episode provider needs series provider - Cyclic Dependency Injection, this will work
using (var tran = _database.GetTransaction())
{
//Delete History, Files, Episodes, Seasons then the Series
//Delete History Items for any episodes that belong to this series
Logger.Debug("Deleting History Items from DB for Series: {0}", series.SeriesId);
var episodes = series.Episodes.Select(e => e.EpisodeId).ToList();
episodes.ForEach(e => _repository.DeleteMany<History>(h => h.EpisodeId == e));
Logger.Debug("Deleting History Items from DB for Series: {0}", series.Title);
_database.Delete<History>("WHERE SeriesId=@0", seriesId);
//Delete all episode files from the DB for episodes in this series
Logger.Debug("Deleting EpisodeFiles from DB for Series: {0}", series.SeriesId);
_repository.DeleteMany(series.EpisodeFiles);
Logger.Debug("Deleting EpisodeFiles from DB for Series: {0}", series.Title);
_database.Delete<EpisodeFile>("WHERE SeriesId=@0", seriesId);
//Delete all episodes for this series from the DB
Logger.Debug("Deleting Episodes from DB for Series: {0}", series.SeriesId);
_repository.DeleteMany(series.Episodes);
Logger.Debug("Deleting Episodes from DB for Series: {0}", series.Title);
_database.Delete<Episode>("WHERE SeriesId=@0", seriesId);
//Delete the Series
Logger.Debug("Deleting Series from DB {0}", series.Title);
_repository.Delete<Series>(seriesId);
Logger.Debug("Deleting Series from DB {0}", series.Title);
_database.Delete<Series>("WHERE SeriesId=@0", seriesId);
Logger.Info("Successfully deleted Series [{0}]", seriesId);
Logger.Info("Successfully deleted Series [{0}]", series.Title);
tran.Complete();
}
}
public virtual bool SeriesPathExists(string cleanPath)
@ -168,13 +160,11 @@ namespace NzbDrone.Core.Providers
/// <summary>
/// Cleans up the AirsTime Component from TheTVDB since it can be garbage that comes in.
/// </summary>
/// <param name = "input">The TVDB AirsTime</param>
/// <param name = "rawTime">The TVDB AirsTime</param>
/// <returns>String that contains the AirTimes</returns>
private string CleanAirsTime(string inputTime)
private static string CleanAirsTime(string rawTime)
{
Regex timeRegex = new Regex(@"^(?<time>\d+:?\d*)\W*(?<meridiem>am|pm)?", RegexOptions.IgnoreCase | RegexOptions.Compiled);
var match = timeRegex.Match(inputTime);
var match = TimeRegex.Match(rawTime);
var time = match.Groups["time"].Value;
var meridiem = match.Groups["meridiem"].Value;