aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-03-06 00:17:13 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-03-06 00:17:13 -0500
commit2349c8099d04c6c0631cd33e6c74b404381946ab (patch)
treeb348b662691135dc1d7ba0ae317b9966ac54d269 /MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
parent9396f16aed2f304789324afc83e0c9f385c5f00a (diff)
start on manual collection creation
Diffstat (limited to 'MediaBrowser.Server.Implementations/Collections/CollectionManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Collections/CollectionManager.cs79
1 files changed, 79 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
new file mode 100644
index 000000000..da444d100
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs
@@ -0,0 +1,79 @@
+using MediaBrowser.Common.IO;
+using MediaBrowser.Controller.Collections;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
+using System;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Server.Implementations.Collections
+{
+ public class CollectionManager : ICollectionManager
+ {
+ private readonly ILibraryManager _libraryManager;
+ private readonly IFileSystem _fileSystem;
+ private readonly ILibraryMonitor _iLibraryMonitor;
+
+ public CollectionManager(ILibraryManager libraryManager, IFileSystem fileSystem, ILibraryMonitor iLibraryMonitor)
+ {
+ _libraryManager = libraryManager;
+ _fileSystem = fileSystem;
+ _iLibraryMonitor = iLibraryMonitor;
+ }
+
+ public async Task CreateCollection(CollectionCreationOptions options)
+ {
+ var name = options.Name;
+
+ var folderName = _fileSystem.GetValidFilename(name);
+
+ var parentFolder = _libraryManager.GetItemById(options.ParentId) as Folder;
+
+ if (parentFolder == null)
+ {
+ throw new ArgumentException();
+ }
+
+ var path = Path.Combine(parentFolder.Path, folderName);
+
+ _iLibraryMonitor.ReportFileSystemChangeBeginning(path);
+
+ try
+ {
+ Directory.CreateDirectory(path);
+
+ var collection = new BoxSet
+ {
+ Name = name,
+ Parent = parentFolder,
+ DisplayMediaType = "Collection",
+ Path = path,
+ DontFetchMeta = options.IsLocked
+ };
+
+ await parentFolder.AddChild(collection, CancellationToken.None).ConfigureAwait(false);
+
+ await collection.RefreshMetadata(new MetadataRefreshOptions(), CancellationToken.None)
+ .ConfigureAwait(false);
+ }
+ finally
+ {
+ // Refresh handled internally
+ _iLibraryMonitor.ReportFileSystemChangeComplete(path, false);
+ }
+ }
+
+ public Task AddToCollection(Guid collectionId, Guid itemId)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task RemoveFromCollection(Guid collectionId, Guid itemId)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}