diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2013-03-15 15:08:49 -0400 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2013-03-15 15:08:49 -0400 |
| commit | c02ac2a8ca0a01e6951d5ccca13e98a118057505 (patch) | |
| tree | 4e1215674203c4f9eaa95671727d72a4492f62b0 /MediaBrowser.Controller | |
| parent | b86a03bbdcca3c03b2cd880e607472bc7b3d0850 (diff) | |
Manage some items as single instance throughout #54
Diffstat (limited to 'MediaBrowser.Controller')
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 |
