diff options
| author | Joshua M. Boniface <joshua@boniface.me> | 2018-12-30 01:04:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-12-30 01:04:27 -0500 |
| commit | 76b647e0a8eddd65dc9c4de7b887a3faf6e12bcc (patch) | |
| tree | a0fcc6a59c597f7c288dd3619c7e72bf97d2e0ea /MediaBrowser.Controller/Entities | |
| parent | a86b71899ec52c44ddc6c3018e8cc5e9d7ff4d62 (diff) | |
| parent | d10d632c489b94566bbcf1b7e9c2bb86c31c97b1 (diff) | |
Merge pull request #325 from jellyfin/devv3.5.2-5
Master 3.5.2-5
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 35 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItemExtensions.cs | 42 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/CollectionFolder.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Extensions.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/TagExtensions.cs | 7 |
6 files changed, 57 insertions, 38 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 053ee1b96..e3b5b5117 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1295,7 +1295,7 @@ namespace MediaBrowser.Controller.Entities } } - return string.Join("/", terms.ToArray(terms.Count)); + return string.Join("/", terms.ToArray()); } /// <summary> @@ -1536,7 +1536,7 @@ namespace MediaBrowser.Controller.Entities { var newThemeVideos = LoadThemeVideos(fileSystemChildren, options.DirectoryService); - var newThemeVideoIds = newThemeVideos.Select(i => i.Id).ToArray(newThemeVideos.Length); + var newThemeVideoIds = newThemeVideos.Select(i => i.Id).ToArray(); var themeVideosChanged = !item.ThemeVideoIds.SequenceEqual(newThemeVideoIds); @@ -1573,7 +1573,7 @@ namespace MediaBrowser.Controller.Entities private async Task<bool> RefreshThemeSongs(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken) { var newThemeSongs = LoadThemeSongs(fileSystemChildren, options.DirectoryService); - var newThemeSongIds = newThemeSongs.Select(i => i.Id).ToArray(newThemeSongs.Length); + var newThemeSongIds = newThemeSongs.Select(i => i.Id).ToArray(); var themeSongsChanged = !item.ThemeSongIds.SequenceEqual(newThemeSongIds); @@ -2110,9 +2110,8 @@ namespace MediaBrowser.Controller.Entities } else { - var list = current.ToArray(current.Length + 1); - list[list.Length - 1] = name; - Studios = list; + var list = + Studios = current.Concat(new [] { name }).ToArray(); } } } @@ -2252,9 +2251,7 @@ namespace MediaBrowser.Controller.Entities else { var currentCount = ImageInfos.Length; - var newList = ImageInfos.ToArray(currentCount + 1); - newList[currentCount] = image; - ImageInfos = newList; + ImageInfos = ImageInfos.Concat(new [] { image }) .ToArray(); } } @@ -2269,10 +2266,7 @@ namespace MediaBrowser.Controller.Entities if (image == null) { - var currentCount = ImageInfos.Length; - var newList = ImageInfos.ToArray(currentCount + 1); - newList[currentCount] = GetImageInfo(file, type); - ImageInfos = newList; + ImageInfos = ImageInfos.Concat(new [] { GetImageInfo(file, type) }) .ToArray(); } else { @@ -2486,16 +2480,7 @@ namespace MediaBrowser.Controller.Entities if (newImageList.Count > 0) { - var currentCount = ImageInfos.Length; - var newList = ImageInfos.ToArray(currentCount + newImageList.Count); - - foreach (var image in newImageList) - { - newList[currentCount] = GetImageInfo(image, imageType); - currentCount++; - } - - ImageInfos = newList; + ImageInfos = ImageInfos.Concat(newImageList.Select(i => GetImageInfo(i, imageType))).ToArray(); } return imageUpdated || newImageList.Count > 0; @@ -2537,7 +2522,7 @@ namespace MediaBrowser.Controller.Entities var extensions = new List<string> { ".nfo", ".xml", ".srt", ".vtt", ".sub", ".idx", ".txt", ".edl", ".bif", ".smi", ".ttml" }; extensions.AddRange(SupportedImageExtensions); - return FileSystem.GetFiles(FileSystem.GetDirectoryName(Path), extensions.ToArray(extensions.Count), false, false) + return FileSystem.GetFiles(FileSystem.GetDirectoryName(Path), extensions.ToArray(), false, false) .Where(i => System.IO.Path.GetFileNameWithoutExtension(i.FullName).StartsWith(filename, StringComparison.OrdinalIgnoreCase)) .ToList(); } @@ -2776,7 +2761,7 @@ namespace MediaBrowser.Controller.Entities { var list = GetEtagValues(user); - return string.Join("|", list.ToArray(list.Count)).GetMD5().ToString("N"); + return string.Join("|", list.ToArray()).GetMD5().ToString("N"); } protected virtual List<string> GetEtagValues(User user) diff --git a/MediaBrowser.Controller/Entities/BaseItemExtensions.cs b/MediaBrowser.Controller/Entities/BaseItemExtensions.cs index c56a370a8..8ab1788b5 100644 --- a/MediaBrowser.Controller/Entities/BaseItemExtensions.cs +++ b/MediaBrowser.Controller/Entities/BaseItemExtensions.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -61,5 +62,46 @@ namespace MediaBrowser.Controller.Entities item.SetImagePath(imageType, BaseItem.FileSystem.GetFileInfo(file)); } } + + /// <summary> + /// Copies all properties on object. Skips properties that do not exist. + /// </summary> + /// <param name="source">The source object.</param> + /// <param name="dest">The destination object.</param> + public static void DeepCopy<T, TU>(this T source, TU dest) + where T : BaseItem + where TU : BaseItem + { + var sourceProps = typeof (T).GetProperties().Where(x => x.CanRead).ToList(); + var destProps = typeof(TU).GetProperties() + .Where(x => x.CanWrite) + .ToList(); + + foreach (var sourceProp in sourceProps) + { + if (destProps.Any(x => x.Name == sourceProp.Name)) + { + var p = destProps.First(x => x.Name == sourceProp.Name); + p.SetValue(dest, sourceProp.GetValue(source, null), null); + } + + } + + } + + /// <summary> + /// Copies all properties on newly created object. Skips properties that do not exist. + /// </summary> + /// <param name="source">The source object.</param> + public static TU DeepCopy<T, TU>(this T source) + where T : BaseItem + where TU : BaseItem, new() + { + var dest = new TU(); + source.DeepCopy(dest); + return dest; + } + + } } diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 8240a68ff..19a8c24b8 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -275,7 +275,7 @@ namespace MediaBrowser.Controller.Entities var changed = !linkedChildren.SequenceEqual(LinkedChildren, new LinkedChildComparer(FileSystem)); - LinkedChildren = linkedChildren.ToArray(linkedChildren.Count); + LinkedChildren = linkedChildren.ToArray(); var folderIds = PhysicalFolderIds; var newFolderIds = physicalFolders.Select(i => i.Id).ToArray(); diff --git a/MediaBrowser.Controller/Entities/Extensions.cs b/MediaBrowser.Controller/Entities/Extensions.cs index c706cf36c..ee135a14e 100644 --- a/MediaBrowser.Controller/Entities/Extensions.cs +++ b/MediaBrowser.Controller/Entities/Extensions.cs @@ -35,10 +35,7 @@ namespace MediaBrowser.Controller.Entities } else { - var list = item.RemoteTrailers.ToArray(item.RemoteTrailers.Length + 1); - list[list.Length - 1] = mediaUrl; - - item.RemoteTrailers = list; + item.RemoteTrailers = item.RemoteTrailers.Concat(new [] { mediaUrl }).ToArray(); } } } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 8b9aa5fc3..81072b6e7 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -914,7 +914,7 @@ namespace MediaBrowser.Controller.Entities // Try to preserve order return result.OrderBy(i => ids.IndexOf(i.Id)).ToArray(); } - return result.ToArray(result.Count); + return result.ToArray(); } return GetItemsInternal(query).Items; @@ -1608,7 +1608,7 @@ namespace MediaBrowser.Controller.Entities Logger.Info("Shortcut links have changed for {0}", Path); newShortcutLinks.AddRange(LinkedChildren.Where(i => i.Type == LinkedChildType.Manual)); - LinkedChildren = newShortcutLinks.ToArray(newShortcutLinks.Count); + LinkedChildren = newShortcutLinks.ToArray(); return true; } } diff --git a/MediaBrowser.Controller/Entities/TagExtensions.cs b/MediaBrowser.Controller/Entities/TagExtensions.cs index e5d8f35d9..84e61be4f 100644 --- a/MediaBrowser.Controller/Entities/TagExtensions.cs +++ b/MediaBrowser.Controller/Entities/TagExtensions.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using System.Linq; -using MediaBrowser.Model.Extensions; namespace MediaBrowser.Controller.Entities { @@ -24,10 +22,7 @@ namespace MediaBrowser.Controller.Entities } else { - var list = current.ToArray(current.Length + 1); - list[list.Length - 1] = name; - - item.Tags = list; + item.Tags = current.Concat(new [] { name }).ToArray(); } } } |
