aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorEric Reed <ebr@mediabrowser3.com>2013-03-15 15:08:49 -0400
committerEric Reed <ebr@mediabrowser3.com>2013-03-15 15:08:49 -0400
commitc02ac2a8ca0a01e6951d5ccca13e98a118057505 (patch)
tree4e1215674203c4f9eaa95671727d72a4492f62b0 /MediaBrowser.Controller
parentb86a03bbdcca3c03b2cd880e607472bc7b3d0850 (diff)
Manage some items as single instance throughout #54
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs6
-rw-r--r--MediaBrowser.Controller/Entities/BasePluginFolder.cs3
-rw-r--r--MediaBrowser.Controller/Entities/CollectionFolder.cs3
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs2
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs7
5 files changed, 17 insertions, 4 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 4f34f2b675..b7d2a75ec7 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -24,7 +24,11 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
public abstract class BaseItem : IHasProviderIds
{
- /// <summary>
+ private Guid _testId = Guid.NewGuid();
+ public Guid TestId
+ {
+ get { return _testId; }
+ } /// <summary>
/// The trailer folder name
/// </summary>
public const string TrailerFolderName = "trailers";
diff --git a/MediaBrowser.Controller/Entities/BasePluginFolder.cs b/MediaBrowser.Controller/Entities/BasePluginFolder.cs
index 7cabcf9f01..ca6cfd246f 100644
--- a/MediaBrowser.Controller/Entities/BasePluginFolder.cs
+++ b/MediaBrowser.Controller/Entities/BasePluginFolder.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.Extensions;
using System;
+using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Entities
{
@@ -7,7 +8,7 @@ namespace MediaBrowser.Controller.Entities
/// Plugins derive from and export this class to create a folder that will appear in the root along
/// with all the other actual physical folders in the system.
/// </summary>
- public abstract class BasePluginFolder : Folder, ICollectionFolder
+ public abstract class BasePluginFolder : Folder, ICollectionFolder, IByReferenceItem
{
/// <summary>
/// Gets or sets the id.
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs
index a3db5ca26a..091cbdc3b5 100644
--- a/MediaBrowser.Controller/Entities/CollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Extensions;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Concurrent;
@@ -15,7 +16,7 @@ namespace MediaBrowser.Controller.Entities
/// Specialized Folder class that points to a subset of the physical folders in the system.
/// It is created from the user-specific folders within the system root
/// </summary>
- public class CollectionFolder : Folder, ICollectionFolder
+ public class CollectionFolder : Folder, ICollectionFolder, IByReferenceItem
{
/// <summary>
/// Gets a value indicating whether this instance is virtual folder.
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index ef34742df4..9e50969201 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -811,7 +811,7 @@ namespace MediaBrowser.Controller.Entities
/// <returns>IEnumerable{BaseItem}.</returns>
protected virtual IEnumerable<BaseItem> GetCachedChildren()
{
- return Kernel.Instance.ItemRepository.RetrieveChildren(this);
+ return Kernel.Instance.ItemRepository.RetrieveChildren(this).Select(i => i is IByReferenceItem ? LibraryManager.GetOrAddByReferenceItem(i) : i);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index dd720d043f..a69e064604 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -181,5 +181,12 @@ namespace MediaBrowser.Controller.Library
/// <param name="searchTerm">The search term.</param>
/// <returns>IEnumerable{BaseItem}.</returns>
IEnumerable<BaseItem> Search(IEnumerable<BaseItem> items, string searchTerm);
+
+ /// <summary>
+ /// Ensure supplied item has only one instance throughout
+ /// </summary>
+ /// <param name="item"></param>
+ /// <returns>The proper instance to the item</returns>
+ BaseItem GetOrAddByReferenceItem(BaseItem item);
}
} \ No newline at end of file