Folder.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.Runtime.Serialization;
  3. namespace MediaBrowser.Model.Entities
  4. {
  5. public class Folder : BaseItem
  6. {
  7. public bool IsRoot { get; set; }
  8. public bool IsVirtualFolder
  9. {
  10. get
  11. {
  12. return Parent != null && Parent.IsRoot;
  13. }
  14. }
  15. [IgnoreDataMember]
  16. public BaseItem[] Children { get; set; }
  17. /// <summary>
  18. /// Finds an item by ID, recursively
  19. /// </summary>
  20. public BaseItem FindById(Guid id)
  21. {
  22. if (Id == id)
  23. {
  24. return this;
  25. }
  26. foreach (BaseItem item in Children)
  27. {
  28. var folder = item as Folder;
  29. if (folder != null)
  30. {
  31. var foundItem = folder.FindById(id);
  32. if (foundItem != null)
  33. {
  34. return foundItem;
  35. }
  36. }
  37. else if (item.Id == id)
  38. {
  39. return item;
  40. }
  41. }
  42. return null;
  43. }
  44. /// <summary>
  45. /// Finds an item by path, recursively
  46. /// </summary>
  47. public BaseItem FindByPath(string path)
  48. {
  49. if (Path.Equals(path, StringComparison.OrdinalIgnoreCase))
  50. {
  51. return this;
  52. }
  53. foreach (BaseItem item in Children)
  54. {
  55. var folder = item as Folder;
  56. if (folder != null)
  57. {
  58. var foundItem = folder.FindByPath(path);
  59. if (foundItem != null)
  60. {
  61. return foundItem;
  62. }
  63. }
  64. else if (item.Path.Equals(path, StringComparison.OrdinalIgnoreCase))
  65. {
  66. return item;
  67. }
  68. }
  69. return null;
  70. }
  71. }
  72. }