aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-11-21 15:48:26 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-11-21 15:48:26 -0500
commit17bacee0890cb03a579f9469e435d922bbdfdd50 (patch)
tree7445da7bb2087c35075a37b6a1d8a71db480381a /MediaBrowser.Controller/Entities
parentee1a746031f15bdfc5c5e38fab704f5fcb9b67ee (diff)
consolidate Artist & MusicArtist
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Artist.cs86
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs69
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs5
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs20
-rw-r--r--MediaBrowser.Controller/Entities/IItemByName.cs5
5 files changed, 83 insertions, 102 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/Artist.cs b/MediaBrowser.Controller/Entities/Audio/Artist.cs
deleted file mode 100644
index 947ee1122..000000000
--- a/MediaBrowser.Controller/Entities/Audio/Artist.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Runtime.Serialization;
-
-namespace MediaBrowser.Controller.Entities.Audio
-{
- /// <summary>
- /// Class Artist
- /// </summary>
- public class Artist : BaseItem, IItemByName, IHasMusicGenres
- {
- public Artist()
- {
- UserItemCounts = new Dictionary<Guid, ItemByNameCounts>();
- }
-
- public string LastFmImageUrl { get; set; }
- public string LastFmImageSize { get; set; }
-
- /// <summary>
- /// Gets the user data key.
- /// </summary>
- /// <returns>System.String.</returns>
- public override string GetUserDataKey()
- {
- return GetUserDataKey(this);
- }
-
- [IgnoreDataMember]
- public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
-
- /// <summary>
- /// Finds the music artist.
- /// </summary>
- /// <param name="artist">The artist.</param>
- /// <param name="libraryManager">The library manager.</param>
- /// <returns>MusicArtist.</returns>
- public static MusicArtist FindMusicArtist(Artist artist, ILibraryManager libraryManager)
- {
- return FindMusicArtist(artist, libraryManager.RootFolder.RecursiveChildren.OfType<MusicArtist>());
- }
-
- /// <summary>
- /// Finds the music artist.
- /// </summary>
- /// <param name="artist">The artist.</param>
- /// <param name="allMusicArtists">All music artists.</param>
- /// <returns>MusicArtist.</returns>
- public static MusicArtist FindMusicArtist(Artist artist, IEnumerable<MusicArtist> allMusicArtists)
- {
- var musicBrainzId = artist.GetProviderId(MetadataProviders.Musicbrainz);
-
- return allMusicArtists.FirstOrDefault(i =>
- {
- if (!string.IsNullOrWhiteSpace(musicBrainzId) && string.Equals(musicBrainzId, i.GetProviderId(MetadataProviders.Musicbrainz), StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
- return string.Compare(i.Name, artist.Name, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0;
- });
- }
-
- /// <summary>
- /// Gets the user data key.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <returns>System.String.</returns>
- public static string GetUserDataKey(BaseItem item)
- {
- var id = item.GetProviderId(MetadataProviders.Musicbrainz);
-
- if (!string.IsNullOrEmpty(id))
- {
- return "Artist-Musicbrainz-" + id;
- }
-
- return "Artist-" + item.Name;
- }
- }
-}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
index d791c92ae..a234844ff 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
@@ -1,11 +1,52 @@
-
+using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
namespace MediaBrowser.Controller.Entities.Audio
{
/// <summary>
/// Class MusicArtist
/// </summary>
- public class MusicArtist : Folder
+ public class MusicArtist : Folder, IItemByName, IHasMusicGenres, IHasDualAccess
{
+ [IgnoreDataMember]
+ public Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
+
+ public bool IsAccessedByName { get; set; }
+
+ public override bool IsFolder
+ {
+ get
+ {
+ return !IsAccessedByName;
+ }
+ }
+
+ protected override IEnumerable<BaseItem> ActualChildren
+ {
+ get
+ {
+ if (IsAccessedByName)
+ {
+ throw new InvalidOperationException("Artists accessed by name do not have children.");
+ }
+
+ return base.ActualChildren;
+ }
+ }
+
+ public override string GetClientTypeName()
+ {
+ if (IsAccessedByName)
+ {
+ //return "Artist";
+ }
+
+ return base.GetClientTypeName();
+ }
+
/// <summary>
/// Gets or sets the last fm image URL.
/// </summary>
@@ -13,13 +54,35 @@ namespace MediaBrowser.Controller.Entities.Audio
public string LastFmImageUrl { get; set; }
public string LastFmImageSize { get; set; }
+ public MusicArtist()
+ {
+ UserItemCounts = new Dictionary<Guid, ItemByNameCounts>();
+ }
+
/// <summary>
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
public override string GetUserDataKey()
{
- return Artist.GetUserDataKey(this);
+ return GetUserDataKey(this);
+ }
+
+ /// <summary>
+ /// Gets the user data key.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <returns>System.String.</returns>
+ public static string GetUserDataKey(BaseItem item)
+ {
+ var id = item.GetProviderId(MetadataProviders.Musicbrainz);
+
+ if (!string.IsNullOrEmpty(id))
+ {
+ return "Artist-Musicbrainz-" + id;
+ }
+
+ return "Artist-" + item.Name;
}
}
}
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 29765fe12..a10a2c263 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1145,6 +1145,11 @@ namespace MediaBrowser.Controller.Entities
return changed;
}
+ public virtual string GetClientTypeName()
+ {
+ return GetType().Name;
+ }
+
/// <summary>
/// Determines if the item is considered new based on user settings
/// </summary>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 8dbc98193..5c561dc0f 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1038,16 +1038,13 @@ namespace MediaBrowser.Controller.Entities
}
}
- if (recursive)
+ if (recursive && child.IsFolder)
{
- var folder = child as Folder;
+ var folder = (Folder)child;
- if (folder != null)
+ if (folder.AddChildrenToList(user, includeLinkedChildren, list, true, filter))
{
- if (folder.AddChildrenToList(user, includeLinkedChildren, list, true, filter))
- {
- hasLinkedChildren = true;
- }
+ hasLinkedChildren = true;
}
}
}
@@ -1150,14 +1147,11 @@ namespace MediaBrowser.Controller.Entities
list.Add(child);
}
- if (recursive)
+ if (recursive && child.IsFolder)
{
- var folder = child as Folder;
+ var folder = (Folder)child;
- if (folder != null)
- {
- folder.AddChildrenToList(list, true, filter);
- }
+ folder.AddChildrenToList(list, true, filter);
}
}
}
diff --git a/MediaBrowser.Controller/Entities/IItemByName.cs b/MediaBrowser.Controller/Entities/IItemByName.cs
index 7284bf101..1cb375374 100644
--- a/MediaBrowser.Controller/Entities/IItemByName.cs
+++ b/MediaBrowser.Controller/Entities/IItemByName.cs
@@ -12,6 +12,11 @@ namespace MediaBrowser.Controller.Entities
Dictionary<Guid, ItemByNameCounts> UserItemCounts { get; set; }
}
+ public interface IHasDualAccess : IItemByName
+ {
+ bool IsAccessedByName { get; }
+ }
+
public static class IItemByNameExtensions
{
public static ItemByNameCounts GetItemByNameCounts(this IItemByName item, User user)