diff options
| author | HurricaneHernandez <carlos@techbyte.ca> | 2014-10-24 16:12:24 -0600 |
|---|---|---|
| committer | HurricaneHernandez <carlos@techbyte.ca> | 2014-10-24 16:12:24 -0600 |
| commit | e01f932f4bd6764850155616e733590a74d905be (patch) | |
| tree | 894a2da0c7b9d96d5108b6f2ed57e0f10dfee96a /MediaBrowser.Controller/Entities | |
| parent | 3be4aa8dc729f5899658790f43a1d1c182e7a243 (diff) | |
| parent | c8a735bcb1ba71e9501d18b3044aa30793ff97ee (diff) | |
Merge remote-tracking branch 'upstream/master' into docker
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicArtist.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/CollectionFolder.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 38 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/MusicVideo.cs | 40 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Episode.cs | 11 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Season.cs | 6 |
7 files changed, 77 insertions, 33 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs index 070572b9b2..2d9e052b1a 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs @@ -226,7 +226,9 @@ namespace MediaBrowser.Controller.Entities.Audio public IEnumerable<BaseItem> GetTaggedItems(IEnumerable<BaseItem> inputItems) { - return inputItems.OfType<IHasArtist>().Where(i => i.HasArtist(Name)).Cast<BaseItem>(); + return inputItems.OfType<IHasArtist>() + .Where(i => i.HasArtist(Name)) + .Cast<BaseItem>(); } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 3137166953..3193ad091d 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -429,6 +429,12 @@ namespace MediaBrowser.Controller.Entities } } + [IgnoreDataMember] + public virtual BaseItem DisplayParent + { + get { return Parent; } + } + /// <summary> /// When the item first debuted. For movies this could be premiere date, episodes would be first aired /// </summary> @@ -548,7 +554,7 @@ namespace MediaBrowser.Controller.Entities return CustomRating; } - var parent = Parent; + var parent = DisplayParent; if (parent != null) { return parent.CustomRatingForComparison; diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 4b90741c09..a10742f01e 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -74,7 +74,8 @@ namespace MediaBrowser.Controller.Entities { FileInfo = new DirectoryInfo(path), Path = path, - Parent = Parent + Parent = Parent, + CollectionType = CollectionType }; // Gather child folder and files diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 4614f2f8a3..4abdde8ddd 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -736,7 +736,9 @@ namespace MediaBrowser.Controller.Entities /// <returns>IEnumerable{BaseItem}.</returns> protected virtual IEnumerable<BaseItem> GetNonCachedChildren(IDirectoryService directoryService) { - return LibraryManager.ResolvePaths<BaseItem>(GetFileSystemChildren(directoryService), directoryService, this); + var collectionType = LibraryManager.FindCollectionType(this); + + return LibraryManager.ResolvePaths<BaseItem>(GetFileSystemChildren(directoryService), directoryService, this, collectionType); } /// <summary> @@ -745,7 +747,16 @@ namespace MediaBrowser.Controller.Entities /// <returns>IEnumerable{BaseItem}.</returns> protected IEnumerable<BaseItem> GetCachedChildren() { - return ItemRepository.GetChildren(Id).Select(RetrieveChild).Where(i => i != null); + var childrenItems = ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null); + + //var children = ItemRepository.GetChildren(Id).Select(RetrieveChild).Where(i => i != null).ToList(); + + //if (children.Count != childrenItems.Count) + //{ + // var b = this; + //} + + return childrenItems; } /// <summary> @@ -770,6 +781,29 @@ namespace MediaBrowser.Controller.Entities return item; } + private BaseItem RetrieveChild(BaseItem child) + { + var item = LibraryManager.GetMemoryItemById(child.Id); + + if (item != null) + { + if (item is IByReferenceItem) + { + return LibraryManager.GetOrAddByReferenceItem(item); + } + + item.Parent = this; + } + else + { + child.Parent = this; + LibraryManager.RegisterItem(child); + item = child; + } + + return item; + } + public virtual Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query) { var user = query.User; diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs index d36bfd7c41..015e4b4aee 100644 --- a/MediaBrowser.Controller/Entities/MusicVideo.cs +++ b/MediaBrowser.Controller/Entities/MusicVideo.cs @@ -12,12 +12,6 @@ namespace MediaBrowser.Controller.Entities public class MusicVideo : Video, IHasArtist, IHasMusicGenres, IHasProductionLocations, IHasBudget, IHasLookupInfo<MusicVideoInfo> { /// <summary> - /// Gets or sets the artist. - /// </summary> - /// <value>The artist.</value> - public string Artist { get; set; } - - /// <summary> /// Gets or sets the album. /// </summary> /// <value>The album.</value> @@ -35,43 +29,35 @@ namespace MediaBrowser.Controller.Entities /// <value>The revenue.</value> public double? Revenue { get; set; } public List<string> ProductionLocations { get; set; } + public List<string> Artists { get; set; } public MusicVideo() { ProductionLocations = new List<string>(); + Artists = new List<string>(); } [IgnoreDataMember] - public List<string> Artists + public List<string> AllArtists { get { - var list = new List<string>(); - - if (!string.IsNullOrEmpty(Artist)) - { - list.Add(Artist); - } - - return list; - + return Artists; } } - [IgnoreDataMember] - public List<string> AllArtists + /// <summary> + /// TODO: Remove + /// </summary> + public string Artist { - get + get { return Artists.FirstOrDefault(); } + set { - var list = new List<string>(); - - if (!string.IsNullOrEmpty(Artist)) + if (!string.IsNullOrEmpty(value) && !Artists.Contains(value, StringComparer.OrdinalIgnoreCase)) { - list.Add(Artist); + Artists.Add(value); } - - return list; - } } @@ -82,7 +68,7 @@ namespace MediaBrowser.Controller.Entities /// <returns><c>true</c> if the specified name has artist; otherwise, <c>false</c>.</returns> public bool HasArtist(string name) { - return string.Equals(Artist, name, StringComparison.OrdinalIgnoreCase); + return AllArtists.Contains(name, StringComparer.OrdinalIgnoreCase); } /// <summary> diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs index 87074ca022..be7867e06c 100644 --- a/MediaBrowser.Controller/Entities/TV/Episode.cs +++ b/MediaBrowser.Controller/Entities/TV/Episode.cs @@ -104,6 +104,15 @@ namespace MediaBrowser.Controller.Entities.TV } } + [IgnoreDataMember] + public override BaseItem DisplayParent + { + get + { + return Season ?? Parent; + } + } + /// <summary> /// Gets the user data key. /// </summary> @@ -153,7 +162,7 @@ namespace MediaBrowser.Controller.Entities.TV // Episodes directly in series folder if (season == null) { - var series = FindParent<Series>(); + var series = Series; if (ParentIndexNumber.HasValue) { diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index 6804b29b73..5426281963 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -44,6 +44,12 @@ namespace MediaBrowser.Controller.Entities.TV } } + [IgnoreDataMember] + public override BaseItem DisplayParent + { + get { return Series ?? Parent; } + } + /// <summary> /// We want to group into our Series /// </summary> |
