aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
authorHurricaneHernandez <carlos@techbyte.ca>2014-10-24 16:12:24 -0600
committerHurricaneHernandez <carlos@techbyte.ca>2014-10-24 16:12:24 -0600
commite01f932f4bd6764850155616e733590a74d905be (patch)
tree894a2da0c7b9d96d5108b6f2ed57e0f10dfee96a /MediaBrowser.Controller/Entities
parent3be4aa8dc729f5899658790f43a1d1c182e7a243 (diff)
parentc8a735bcb1ba71e9501d18b3044aa30793ff97ee (diff)
Merge remote-tracking branch 'upstream/master' into docker
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs4
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs8
-rw-r--r--MediaBrowser.Controller/Entities/CollectionFolder.cs3
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs38
-rw-r--r--MediaBrowser.Controller/Entities/MusicVideo.cs40
-rw-r--r--MediaBrowser.Controller/Entities/TV/Episode.cs11
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs6
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>