aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-29 00:17:58 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-29 00:17:58 -0500
commit81d5e9f8087227591b2be068e822342b17ef3d7a (patch)
treed32dc6f0b75590c3852659be70f5813891a81867 /MediaBrowser.Controller
parentd864ed87f5d2ec1ba19aaae580defdd63c7959d4 (diff)
persist provider results
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs7
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj4
-rw-r--r--MediaBrowser.Controller/Persistence/IItemRepository.cs17
-rw-r--r--MediaBrowser.Controller/Providers/IMetadataProvider.cs28
-rw-r--r--MediaBrowser.Controller/Providers/IProviderRepository.cs48
-rw-r--r--MediaBrowser.Controller/Providers/ItemId.cs35
-rw-r--r--MediaBrowser.Controller/Providers/MetadataStatus.cs122
-rw-r--r--MediaBrowser.Controller/Providers/ProviderResult.cs60
8 files changed, 217 insertions, 104 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index a50a0f467..06ebe8905 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -364,11 +364,16 @@ namespace MediaBrowser.Controller.Entities
}
}
+ private string _forcedSortName;
/// <summary>
/// Gets or sets the name of the forced sort.
/// </summary>
/// <value>The name of the forced sort.</value>
- public string ForcedSortName { get; set; }
+ public string ForcedSortName
+ {
+ get { return _forcedSortName; }
+ set { _forcedSortName = value; _sortName = null; }
+ }
private string _sortName;
/// <summary>
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 45297ef3d..ee8bb2761 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -146,13 +146,15 @@
<Compile Include="Providers\IDynamicInfoProvider.cs" />
<Compile Include="Providers\IHasMetadata.cs" />
<Compile Include="Providers\IImageProvider.cs" />
+ <Compile Include="Providers\IProviderRepository.cs" />
<Compile Include="Providers\IRemoteImageProvider.cs" />
<Compile Include="Providers\ILocalImageProvider.cs" />
<Compile Include="Providers\IMetadataProvider.cs" />
<Compile Include="Providers\IMetadataService.cs" />
+ <Compile Include="Providers\ItemId.cs" />
<Compile Include="Providers\MetadataRefreshOptions.cs" />
<Compile Include="Providers\NameParser.cs" />
- <Compile Include="Providers\ProviderResult.cs" />
+ <Compile Include="Providers\MetadataStatus.cs" />
<Compile Include="Session\ISessionManager.cs" />
<Compile Include="Drawing\ImageExtensions.cs" />
<Compile Include="Entities\AggregateFolder.cs" />
diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs
index 3affe48e7..3a5cb4e87 100644
--- a/MediaBrowser.Controller/Persistence/IItemRepository.cs
+++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs
@@ -1,5 +1,4 @@
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
@@ -112,22 +111,6 @@ namespace MediaBrowser.Controller.Persistence
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
Task SaveMediaStreams(Guid id, IEnumerable<MediaStream> streams, CancellationToken cancellationToken);
-
- /// <summary>
- /// Gets the provider history.
- /// </summary>
- /// <param name="itemId">The item identifier.</param>
- /// <returns>IEnumerable{BaseProviderInfo}.</returns>
- IEnumerable<BaseProviderInfo> GetProviderHistory(Guid itemId);
-
- /// <summary>
- /// Saves the provider history.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <param name="history">The history.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- Task SaveProviderHistory(Guid id, IEnumerable<BaseProviderInfo> history, CancellationToken cancellationToken);
}
}
diff --git a/MediaBrowser.Controller/Providers/IMetadataProvider.cs b/MediaBrowser.Controller/Providers/IMetadataProvider.cs
index 97249e26d..843ba263b 100644
--- a/MediaBrowser.Controller/Providers/IMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/IMetadataProvider.cs
@@ -1,6 +1,4 @@
-using MediaBrowser.Model.Entities;
-using System;
-using System.Collections.Generic;
+using System;
using System.Threading;
using System.Threading.Tasks;
@@ -52,21 +50,14 @@ namespace MediaBrowser.Controller.Providers
public interface IHasChangeMonitor
{
/// <summary>
- /// Determines whether the specified date has changed.
+ /// Determines whether the specified item has changed.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="date">The date.</param>
- /// <returns><c>true</c> if the specified date has changed; otherwise, <c>false</c>.</returns>
+ /// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns>
bool HasChanged(IHasMetadata item, DateTime date);
}
- public enum MetadataProviderType
- {
- Embedded = 0,
- Local = 1,
- Remote = 2
- }
-
public class MetadataResult<T>
where T : IHasMetadata
{
@@ -74,17 +65,4 @@ namespace MediaBrowser.Controller.Providers
public T Item { get; set; }
}
- public class ItemId : IHasProviderIds
- {
- public string Name { get; set; }
- public string MetadataLanguage { get; set; }
- public string MetadataCountryCode { get; set; }
-
- public Dictionary<string, string> ProviderIds { get; set; }
-
- public ItemId()
- {
- ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
- }
- }
}
diff --git a/MediaBrowser.Controller/Providers/IProviderRepository.cs b/MediaBrowser.Controller/Providers/IProviderRepository.cs
new file mode 100644
index 000000000..1c0ad2cd7
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/IProviderRepository.cs
@@ -0,0 +1,48 @@
+using MediaBrowser.Controller.Persistence;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Controller.Providers
+{
+ public interface IProviderRepository : IRepository
+ {
+ /// <summary>
+ /// Gets the provider history.
+ /// </summary>
+ /// <param name="itemId">The item identifier.</param>
+ /// <returns>IEnumerable{BaseProviderInfo}.</returns>
+ IEnumerable<BaseProviderInfo> GetProviderHistory(Guid itemId);
+
+ /// <summary>
+ /// Saves the provider history.
+ /// </summary>
+ /// <param name="id">The identifier.</param>
+ /// <param name="history">The history.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ Task SaveProviderHistory(Guid id, IEnumerable<BaseProviderInfo> history, CancellationToken cancellationToken);
+
+ /// <summary>
+ /// Gets the metadata status.
+ /// </summary>
+ /// <param name="itemId">The item identifier.</param>
+ /// <returns>MetadataStatus.</returns>
+ MetadataStatus GetMetadataStatus(Guid itemId);
+
+ /// <summary>
+ /// Saves the metadata status.
+ /// </summary>
+ /// <param name="status">The status.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ Task SaveMetadataStatus(MetadataStatus status, CancellationToken cancellationToken);
+
+ /// <summary>
+ /// Initializes this instance.
+ /// </summary>
+ /// <returns>Task.</returns>
+ Task Initialize();
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/ItemId.cs b/MediaBrowser.Controller/Providers/ItemId.cs
new file mode 100644
index 000000000..1116eb8b5
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/ItemId.cs
@@ -0,0 +1,35 @@
+using MediaBrowser.Model.Entities;
+using System;
+using System.Collections.Generic;
+
+namespace MediaBrowser.Controller.Providers
+{
+ public class ItemId : IHasProviderIds
+ {
+ /// <summary>
+ /// Gets or sets the name.
+ /// </summary>
+ /// <value>The name.</value>
+ public string Name { get; set; }
+ /// <summary>
+ /// Gets or sets the metadata language.
+ /// </summary>
+ /// <value>The metadata language.</value>
+ public string MetadataLanguage { get; set; }
+ /// <summary>
+ /// Gets or sets the metadata country code.
+ /// </summary>
+ /// <value>The metadata country code.</value>
+ public string MetadataCountryCode { get; set; }
+ /// <summary>
+ /// Gets or sets the provider ids.
+ /// </summary>
+ /// <value>The provider ids.</value>
+ public Dictionary<string, string> ProviderIds { get; set; }
+
+ public ItemId()
+ {
+ ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/MetadataStatus.cs b/MediaBrowser.Controller/Providers/MetadataStatus.cs
new file mode 100644
index 000000000..834d8ec35
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/MetadataStatus.cs
@@ -0,0 +1,122 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MediaBrowser.Common.Extensions;
+
+namespace MediaBrowser.Controller.Providers
+{
+ public class MetadataStatus
+ {
+ /// <summary>
+ /// Gets or sets the item identifier.
+ /// </summary>
+ /// <value>The item identifier.</value>
+ public Guid ItemId { get; set; }
+
+ /// <summary>
+ /// Gets or sets the date last metadata refresh.
+ /// </summary>
+ /// <value>The date last metadata refresh.</value>
+ public DateTime? DateLastMetadataRefresh { get; set; }
+
+ /// <summary>
+ /// Gets or sets the date last images refresh.
+ /// </summary>
+ /// <value>The date last images refresh.</value>
+ public DateTime? DateLastImagesRefresh { get; set; }
+
+ /// <summary>
+ /// Gets or sets the last result.
+ /// </summary>
+ /// <value>The last result.</value>
+ public ProviderRefreshStatus LastStatus { get; set; }
+
+ /// <summary>
+ /// Gets or sets the last result error message.
+ /// </summary>
+ /// <value>The last result error message.</value>
+ public string LastErrorMessage { get; set; }
+
+ /// <summary>
+ /// Gets or sets the providers refreshed.
+ /// </summary>
+ /// <value>The providers refreshed.</value>
+ public List<Guid> MetadataProvidersRefreshed { get; set; }
+ public List<Guid> ImageProvidersRefreshed { get; set; }
+
+ public void AddStatus(ProviderRefreshStatus status, string errorMessage)
+ {
+ if (LastStatus != status)
+ {
+ IsDirty = true;
+ }
+
+ if (string.IsNullOrEmpty(LastErrorMessage))
+ {
+ LastErrorMessage = errorMessage;
+ }
+ if (LastStatus == ProviderRefreshStatus.Success)
+ {
+ LastStatus = status;
+ }
+ }
+
+ public MetadataStatus()
+ {
+ LastStatus = ProviderRefreshStatus.Success;
+
+ MetadataProvidersRefreshed = new List<Guid>();
+ ImageProvidersRefreshed = new List<Guid>();
+ }
+
+ public bool IsDirty { get; private set; }
+
+ public void SetDateLastMetadataRefresh(DateTime date)
+ {
+ if (date != (DateLastMetadataRefresh ?? DateTime.MinValue))
+ {
+ IsDirty = true;
+ }
+
+ DateLastMetadataRefresh = date;
+ }
+
+ public void SetDateLastImagesRefresh(DateTime date)
+ {
+ if (date != (DateLastImagesRefresh ?? DateTime.MinValue))
+ {
+ IsDirty = true;
+ }
+
+ DateLastImagesRefresh = date;
+ }
+
+ public void AddImageProvidersRefreshed(List<Guid> providerIds)
+ {
+ var count = ImageProvidersRefreshed.Count;
+
+ providerIds.AddRange(ImageProvidersRefreshed);
+
+ ImageProvidersRefreshed = providerIds.Distinct().ToList();
+
+ if (ImageProvidersRefreshed.Count != count)
+ {
+ IsDirty = true;
+ }
+ }
+
+ public void AddMetadataProvidersRefreshed(List<Guid> providerIds)
+ {
+ var count = MetadataProvidersRefreshed.Count;
+
+ providerIds.AddRange(MetadataProvidersRefreshed);
+
+ MetadataProvidersRefreshed = providerIds.Distinct().ToList();
+
+ if (MetadataProvidersRefreshed.Count != count)
+ {
+ IsDirty = true;
+ }
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Providers/ProviderResult.cs b/MediaBrowser.Controller/Providers/ProviderResult.cs
deleted file mode 100644
index 2486faeed..000000000
--- a/MediaBrowser.Controller/Providers/ProviderResult.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using System;
-
-namespace MediaBrowser.Controller.Providers
-{
- public class ProviderResult
- {
- /// <summary>
- /// Gets or sets the item identifier.
- /// </summary>
- /// <value>The item identifier.</value>
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether this instance has refreshed metadata.
- /// </summary>
- /// <value><c>true</c> if this instance has refreshed metadata; otherwise, <c>false</c>.</value>
- public bool HasRefreshedMetadata { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether this instance has refreshed images.
- /// </summary>
- /// <value><c>true</c> if this instance has refreshed images; otherwise, <c>false</c>.</value>
- public bool HasRefreshedImages { get; set; }
-
- /// <summary>
- /// Gets or sets the date last refreshed.
- /// </summary>
- /// <value>The date last refreshed.</value>
- public DateTime DateLastRefreshed { get; set; }
-
- /// <summary>
- /// Gets or sets the last result.
- /// </summary>
- /// <value>The last result.</value>
- public ProviderRefreshStatus Status { get; set; }
-
- /// <summary>
- /// Gets or sets the last result error message.
- /// </summary>
- /// <value>The last result error message.</value>
- public string ErrorMessage { get; set; }
-
- public void AddStatus(ProviderRefreshStatus status, string errorMessage)
- {
- if (string.IsNullOrEmpty(ErrorMessage))
- {
- ErrorMessage = errorMessage;
- }
- if (Status == ProviderRefreshStatus.Success)
- {
- Status = status;
- }
- }
-
- public ProviderResult()
- {
- Status = ProviderRefreshStatus.Success;
- }
- }
-}