aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/Audio
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/Audio
parentee1a746031f15bdfc5c5e38fab704f5fcb9b67ee (diff)
consolidate Artist & MusicArtist
Diffstat (limited to 'MediaBrowser.Controller/Entities/Audio')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Artist.cs86
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs69
2 files changed, 66 insertions, 89 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;
}
}
}