From 317f41107091a4334b9133a21e570d627a2d808a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 2 Dec 2013 11:16:03 -0500 Subject: [PATCH] Added IHasBudget --- MediaBrowser.Api/ItemUpdateService.cs | 8 ++++++-- MediaBrowser.Controller/Entities/BaseItem.cs | 12 ----------- .../Entities/IHasBudget.cs | 18 +++++++++++++++++ .../Entities/Movies/Movie.cs | 14 ++++++++++++- .../Entities/MusicVideo.cs | 14 ++++++++++++- MediaBrowser.Controller/Entities/Trailer.cs | 14 ++++++++++++- .../MediaBrowser.Controller.csproj | 1 + .../Providers/BaseItemXmlParser.cs | 20 +++++++++++++------ .../Movies/MovieDbProvider.cs | 8 ++++++-- .../Savers/XmlSaverHelpers.cs | 16 +++++++++------ .../Dto/DtoService.cs | 16 +++++++++------ .../Sorting/BudgetComparer.cs | 7 ++++++- .../Sorting/RevenueComparer.cs | 7 ++++++- 13 files changed, 116 insertions(+), 39 deletions(-) create mode 100644 MediaBrowser.Controller/Entities/IHasBudget.cs diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 48d292bbc2..90fe111292 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -248,8 +248,12 @@ namespace MediaBrowser.Api item.ForcedSortName = request.SortName; } - item.Budget = request.Budget; - item.Revenue = request.Revenue; + var hasBudget = item as IHasBudget; + if (hasBudget != null) + { + hasBudget.Budget = request.Budget; + hasBudget.Revenue = request.Revenue; + } var hasCriticRating = item as IHasCriticRating; if (hasCriticRating != null) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 25da18fcac..f5cdaa9880 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -86,24 +86,12 @@ namespace MediaBrowser.Controller.Entities /// The id. public Guid Id { get; set; } - /// - /// Gets or sets the budget. - /// - /// The budget. - public double? Budget { get; set; } - /// /// Gets or sets the taglines. /// /// The taglines. public List Taglines { get; set; } - /// - /// Gets or sets the revenue. - /// - /// The revenue. - public double? Revenue { get; set; } - /// /// Gets or sets the trailer URL. /// diff --git a/MediaBrowser.Controller/Entities/IHasBudget.cs b/MediaBrowser.Controller/Entities/IHasBudget.cs new file mode 100644 index 0000000000..f697715c16 --- /dev/null +++ b/MediaBrowser.Controller/Entities/IHasBudget.cs @@ -0,0 +1,18 @@ + +namespace MediaBrowser.Controller.Entities +{ + public interface IHasBudget + { + /// + /// Gets or sets the budget. + /// + /// The budget. + double? Budget { get; set; } + + /// + /// Gets or sets the revenue. + /// + /// The revenue. + double? Revenue { get; set; } + } +} diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index eef348f61c..30babe2383 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Controller.Entities.Movies /// /// Class Movie /// - public class Movie : Video, IHasCriticRating, IHasSoundtracks + public class Movie : Video, IHasCriticRating, IHasSoundtracks, IHasBudget { public List SpecialFeatureIds { get; set; } @@ -23,6 +23,18 @@ namespace MediaBrowser.Controller.Entities.Movies SoundtrackIds = new List(); } + /// + /// Gets or sets the budget. + /// + /// The budget. + public double? Budget { get; set; } + + /// + /// Gets or sets the revenue. + /// + /// The revenue. + public double? Revenue { get; set; } + /// /// Gets or sets the critic rating. /// diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs index 207f76efda..68ad4630a5 100644 --- a/MediaBrowser.Controller/Entities/MusicVideo.cs +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -4,7 +4,7 @@ using System; namespace MediaBrowser.Controller.Entities { - public class MusicVideo : Video, IHasArtist, IHasMusicGenres + public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasBudget { /// /// Gets or sets the artist. @@ -18,6 +18,18 @@ namespace MediaBrowser.Controller.Entities /// The album. public string Album { get; set; } + /// + /// Gets or sets the budget. + /// + /// The budget. + public double? Budget { get; set; } + + /// + /// Gets or sets the revenue. + /// + /// The revenue. + public double? Revenue { get; set; } + /// /// Determines whether the specified name has artist. /// diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index 26814ad40b..7c14c9865d 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -8,7 +8,7 @@ namespace MediaBrowser.Controller.Entities /// /// Class Trailer /// - public class Trailer : Video, IHasCriticRating, IHasSoundtracks + public class Trailer : Video, IHasCriticRating, IHasSoundtracks, IHasBudget { public List SoundtrackIds { get; set; } @@ -19,6 +19,18 @@ namespace MediaBrowser.Controller.Entities SoundtrackIds = new List(); } + /// + /// Gets or sets the budget. + /// + /// The budget. + public double? Budget { get; set; } + + /// + /// Gets or sets the revenue. + /// + /// The revenue. + public double? Revenue { get; set; } + /// /// Gets or sets the critic rating. /// diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 9b89b12c50..e5fe6a04f7 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -90,6 +90,7 @@ + diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index 14c83bed43..44138a5989 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -162,10 +162,14 @@ namespace MediaBrowser.Controller.Providers case "Budget": { var text = reader.ReadElementContentAsString(); - double value; - if (double.TryParse(text, NumberStyles.Any, _usCulture, out value)) + var hasBudget = item as IHasBudget; + if (hasBudget != null) { - item.Budget = value; + double value; + if (double.TryParse(text, NumberStyles.Any, _usCulture, out value)) + { + hasBudget.Budget = value; + } } break; @@ -174,10 +178,14 @@ namespace MediaBrowser.Controller.Providers case "Revenue": { var text = reader.ReadElementContentAsString(); - double value; - if (double.TryParse(text, NumberStyles.Any, _usCulture, out value)) + var hasBudget = item as IHasBudget; + if (hasBudget != null) { - item.Revenue = value; + double value; + if (double.TryParse(text, NumberStyles.Any, _usCulture, out value)) + { + hasBudget.Revenue = value; + } } break; diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index e4fe2a914d..b812c93247 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -701,8 +701,12 @@ namespace MediaBrowser.Providers.Movies } movie.HomePageUrl = movieData.homepage; - movie.Budget = movieData.budget; - movie.Revenue = movieData.revenue; + var hasBudget = movie as IHasBudget; + if (hasBudget != null) + { + hasBudget.Budget = movieData.budget; + hasBudget.Revenue = movieData.revenue; + } if (!string.IsNullOrEmpty(movieData.tagline)) { diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs index 5a49e4f36b..4c032c8e78 100644 --- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs @@ -280,14 +280,18 @@ namespace MediaBrowser.Providers.Savers builder.Append(""); } - if (item.Budget.HasValue) + var hasBudget = item as IHasBudget; + if (hasBudget != null) { - builder.Append("" + SecurityElement.Escape(item.Budget.Value.ToString(UsCulture)) + ""); - } + if (hasBudget.Budget.HasValue) + { + builder.Append("" + SecurityElement.Escape(hasBudget.Budget.Value.ToString(UsCulture)) + ""); + } - if (item.Revenue.HasValue) - { - builder.Append("" + SecurityElement.Escape(item.Revenue.Value.ToString(UsCulture)) + ""); + if (hasBudget.Revenue.HasValue) + { + builder.Append("" + SecurityElement.Escape(hasBudget.Revenue.Value.ToString(UsCulture)) + ""); + } } if (item.CommunityRating.HasValue) diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 5333518753..b43449858e 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -727,14 +727,18 @@ namespace MediaBrowser.Server.Implementations.Dto dto.EnableInternetProviders = !item.DontFetchMeta; } - if (fields.Contains(ItemFields.Budget)) + var hasBudget = item as IHasBudget; + if (hasBudget != null) { - dto.Budget = item.Budget; - } + if (fields.Contains(ItemFields.Budget)) + { + dto.Budget = hasBudget.Budget; + } - if (fields.Contains(ItemFields.Revenue)) - { - dto.Revenue = item.Revenue; + if (fields.Contains(ItemFields.Revenue)) + { + dto.Revenue = hasBudget.Revenue; + } } dto.EndDate = item.EndDate; diff --git a/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs b/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs index d2dac65499..87a7325c63 100644 --- a/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/BudgetComparer.cs @@ -19,7 +19,12 @@ namespace MediaBrowser.Server.Implementations.Sorting private double GetValue(BaseItem x) { - return x.Budget ?? 0; + var hasBudget = x as IHasBudget; + if (hasBudget != null) + { + return hasBudget.Budget ?? 0; + } + return 0; } /// diff --git a/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs b/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs index e9d7912a16..6caa27ac39 100644 --- a/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/RevenueComparer.cs @@ -19,7 +19,12 @@ namespace MediaBrowser.Server.Implementations.Sorting private double GetValue(BaseItem x) { - return x.Revenue ?? 0; + var hasBudget = x as IHasBudget; + if (hasBudget != null) + { + return hasBudget.Revenue ?? 0; + } + return 0; } ///