aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-03 09:24:23 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-03 09:24:23 -0400
commit0e4972f7e63002fb3a4caeb96bafd097bc1ed56b (patch)
tree6198d7db1a5ee6d156a02b69cbac1abbb8df083c
parenta52ea4cf084c0e734fa9cd76e332b8e80d9f255b (diff)
reduced some virtualization
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs13
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs7
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs32
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs23
-rw-r--r--MediaBrowser.Controller/Entities/IndexFolder.cs2
-rw-r--r--MediaBrowser.Controller/Entities/TV/Episode.cs43
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs18
7 files changed, 70 insertions, 68 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
index 79624826a..36cf995f5 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
@@ -1,7 +1,8 @@
-using System.Collections.Generic;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
-using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Entities.Audio
{
@@ -79,9 +80,11 @@ namespace MediaBrowser.Controller.Entities.Audio
{
get
{
- var child = Children.FirstOrDefault();
-
- return child == null ? base.Genres : child.Genres;
+ return Children
+ .OfType<Audio>()
+ .SelectMany(i => i.Genres)
+ .Distinct(StringComparer.OrdinalIgnoreCase)
+ .ToList();
}
set
{
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
index a8de0f08a..bf11403e5 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
@@ -14,9 +14,10 @@ namespace MediaBrowser.Controller.Entities.Audio
get
{
return Children
- .SelectMany(i => i.Genres)
- .Distinct(StringComparer.OrdinalIgnoreCase)
- .ToList();
+ .OfType<MusicAlbum>()
+ .SelectMany(i => i.Genres)
+ .Distinct(StringComparer.OrdinalIgnoreCase)
+ .ToList();
}
set
{
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 35639925d..ab30d9ef7 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -469,7 +469,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the official rating.
/// </summary>
/// <value>The official rating.</value>
- public virtual string OfficialRating { get; set; }
+ public string OfficialRating { get; set; }
/// <summary>
/// Gets or sets the official rating description.
@@ -481,7 +481,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the custom rating.
/// </summary>
/// <value>The custom rating.</value>
- public virtual string CustomRating { get; set; }
+ public string CustomRating { get; set; }
/// <summary>
/// Gets or sets the language.
@@ -521,6 +521,18 @@ namespace MediaBrowser.Controller.Entities
get { return People; }
}
+ [IgnoreDataMember]
+ public virtual IEnumerable<string> AllStudios
+ {
+ get { return Studios; }
+ }
+
+ [IgnoreDataMember]
+ public virtual IEnumerable<string> AllGenres
+ {
+ get { return Genres; }
+ }
+
/// <summary>
/// Gets or sets the studios.
/// </summary>
@@ -620,6 +632,18 @@ namespace MediaBrowser.Controller.Entities
public List<Guid> ThemeVideoIds { get; set; }
public List<Guid> LocalTrailerIds { get; set; }
+ [IgnoreDataMember]
+ public virtual string OfficialRatingForComparison
+ {
+ get { return OfficialRating; }
+ }
+
+ [IgnoreDataMember]
+ public virtual string CustomRatingForComparison
+ {
+ get { return CustomRating; }
+ }
+
/// <summary>
/// Loads local trailers from the file system
/// </summary>
@@ -992,11 +1016,11 @@ namespace MediaBrowser.Controller.Entities
return true;
}
- var rating = CustomRating;
+ var rating = CustomRatingForComparison;
if (string.IsNullOrEmpty(rating))
{
- rating = OfficialRating;
+ rating = OfficialRatingForComparison;
}
if (string.IsNullOrEmpty(rating))
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index dd39ccec9..9d394fac6 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -126,20 +126,17 @@ namespace MediaBrowser.Controller.Entities
/// <summary>
/// Never want folders to be blocked by "BlockNotRated"
/// </summary>
- public override string OfficialRating
+ [IgnoreDataMember]
+ public override string OfficialRatingForComparison
{
get
{
if (this is Series)
{
- return base.OfficialRating;
+ return base.OfficialRatingForComparison;
}
- return !string.IsNullOrEmpty(base.OfficialRating) ? base.OfficialRating : "None";
- }
- set
- {
- base.OfficialRating = value;
+ return !string.IsNullOrEmpty(base.OfficialRatingForComparison) ? base.OfficialRatingForComparison : "None";
}
}
@@ -316,9 +313,9 @@ namespace MediaBrowser.Controller.Entities
{
var indexName = LocalizedStrings.Instance.GetString("StudioDispPref");
- var candidates = GetRecursiveChildren(user).Where(i => i.IncludeInIndex && i.Studios != null).ToList();
+ var candidates = GetRecursiveChildren(user).Where(i => i.IncludeInIndex).ToList();
- return candidates.AsParallel().SelectMany(i => i.Studios)
+ return candidates.AsParallel().SelectMany(i => i.AllStudios)
.Distinct()
.Select(i =>
{
@@ -338,7 +335,7 @@ namespace MediaBrowser.Controller.Entities
}
})
.Where(i => i != null)
- .Select(ndx => new IndexFolder(this, ndx, candidates.Where(i => i.Studios.Any(s => s.Equals(ndx.Name, StringComparison.OrdinalIgnoreCase))), indexName));
+ .Select(ndx => new IndexFolder(this, ndx, candidates.Where(i => i.AllStudios.Any(s => s.Equals(ndx.Name, StringComparison.OrdinalIgnoreCase))), indexName));
}
}
@@ -356,9 +353,9 @@ namespace MediaBrowser.Controller.Entities
var indexName = LocalizedStrings.Instance.GetString("GenreDispPref");
//we need a copy of this so we don't double-recurse
- var candidates = GetRecursiveChildren(user).Where(i => i.IncludeInIndex && i.Genres != null).ToList();
+ var candidates = GetRecursiveChildren(user).Where(i => i.IncludeInIndex).ToList();
- return candidates.AsParallel().SelectMany(i => i.Genres)
+ return candidates.AsParallel().SelectMany(i => i.AllGenres)
.Distinct()
.Select(i =>
{
@@ -378,7 +375,7 @@ namespace MediaBrowser.Controller.Entities
}
})
.Where(i => i != null)
- .Select(genre => new IndexFolder(this, genre, candidates.Where(i => i.Genres.Any(g => g.Equals(genre.Name, StringComparison.OrdinalIgnoreCase))), indexName)
+ .Select(genre => new IndexFolder(this, genre, candidates.Where(i => i.AllGenres.Any(g => g.Equals(genre.Name, StringComparison.OrdinalIgnoreCase))), indexName)
);
}
}
diff --git a/MediaBrowser.Controller/Entities/IndexFolder.cs b/MediaBrowser.Controller/Entities/IndexFolder.cs
index cc4c9bf51..6b88ea1fc 100644
--- a/MediaBrowser.Controller/Entities/IndexFolder.cs
+++ b/MediaBrowser.Controller/Entities/IndexFolder.cs
@@ -181,7 +181,7 @@ namespace MediaBrowser.Controller.Entities
ForcedSortName = ShadowItem.SortName;
Genres = ShadowItem.Genres;
Studios = ShadowItem.Studios;
- OfficialRating = ShadowItem.OfficialRating;
+ OfficialRating = ShadowItem.OfficialRatingForComparison;
BackdropImagePaths = ShadowItem.BackdropImagePaths;
Images = ShadowItem.Images;
Overview = ShadowItem.Overview;
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index 7e8540ebe..bef98bf9d 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -73,59 +73,42 @@ namespace MediaBrowser.Controller.Entities.TV
}
}
- /// <summary>
- /// Gets or sets the studios.
- /// </summary>
- /// <value>The studios.</value>
[IgnoreDataMember]
- public override List<string> Studios
+ public override IEnumerable<string> AllGenres
{
get
{
- return Series != null ? Series.Studios : null;
- }
- set
- {
- base.Studios = value;
+ if (Genres == null) return Series != null ? Series.Genres : Genres;
+ return Series != null && Series.Genres != null ? Genres.Concat(Series.Genres) : base.AllGenres;
}
}
- /// <summary>
- /// Gets or sets the genres.
- /// </summary>
- /// <value>The genres.</value>
[IgnoreDataMember]
- public override List<string> Genres
+ public override IEnumerable<string> AllStudios
{
- get { return Series != null ? Series.Genres : null; }
- set
+ get
{
- base.Genres = value;
+ if (Studios == null) return Series != null ? Series.Studios : Studios;
+ return Series != null && Series.Studios != null ? Studios.Concat(Series.Studios) : base.AllStudios;
}
}
/// <summary>
/// Our rating comes from our series
/// </summary>
- public override string OfficialRating
+ [IgnoreDataMember]
+ public override string OfficialRatingForComparison
{
- get { return Series != null ? Series.OfficialRating : base.OfficialRating; }
- set
- {
- base.OfficialRating = value;
- }
+ get { return Series != null ? Series.OfficialRatingForComparison : base.OfficialRatingForComparison; }
}
/// <summary>
/// Our rating comes from our series
/// </summary>
- public override string CustomRating
+ [IgnoreDataMember]
+ public override string CustomRatingForComparison
{
- get { return Series != null ? Series.CustomRating : base.CustomRating; }
- set
- {
- base.CustomRating = value;
- }
+ get { return Series != null ? Series.CustomRatingForComparison : base.CustomRatingForComparison; }
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index b4dc3eae4..9f15de920 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -96,25 +96,19 @@ namespace MediaBrowser.Controller.Entities.TV
/// <summary>
/// Our rating comes from our series
/// </summary>
- public override string OfficialRating
+ [IgnoreDataMember]
+ public override string OfficialRatingForComparison
{
- get { return Series != null ? Series.OfficialRating : base.OfficialRating; }
- set
- {
- base.OfficialRating = value;
- }
+ get { return Series != null ? Series.OfficialRatingForComparison : base.OfficialRatingForComparison; }
}
/// <summary>
/// Our rating comes from our series
/// </summary>
- public override string CustomRating
+ [IgnoreDataMember]
+ public override string CustomRatingForComparison
{
- get { return Series != null ? Series.CustomRating : base.CustomRating; }
- set
- {
- base.CustomRating = value;
- }
+ get { return Series != null ? Series.CustomRatingForComparison : base.CustomRatingForComparison; }
}
/// <summary>