added sync job database

This commit is contained in:
Luke Pulverenti
2014-07-26 13:30:15 -04:00
parent d56fa09ccc
commit 37c27a26e9
97 changed files with 1539 additions and 507 deletions

View File

@@ -529,10 +529,10 @@ namespace MediaBrowser.Controller.Entities
.Where(i => string.Equals(i.Name, TrailerFolderName, StringComparison.OrdinalIgnoreCase))
.SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
.ToList();
// Support plex/xbmc convention
files.AddRange(fileSystemChildren.OfType<FileInfo>()
.Where(i => System.IO.Path.GetFileNameWithoutExtension(i.Name).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
.Where(i => FileSystem.GetFileNameWithoutExtension(i).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
);
return LibraryManager.ResolvePaths<Trailer>(files, directoryService, null).Select(video =>
@@ -564,7 +564,7 @@ namespace MediaBrowser.Controller.Entities
// Support plex/xbmc convention
files.AddRange(fileSystemChildren.OfType<FileInfo>()
.Where(i => string.Equals(System.IO.Path.GetFileNameWithoutExtension(i.Name), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
.Where(i => string.Equals(FileSystem.GetFileNameWithoutExtension(i), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
);
return LibraryManager.ResolvePaths<Audio.Audio>(files, directoryService, null).Select(audio =>
@@ -1564,7 +1564,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path))
{
Name = System.IO.Path.GetFileNameWithoutExtension(Path);
Name = FileSystem.GetFileNameWithoutExtension(Path);
hasChanges = true;
}

View File

@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
using System;
@@ -189,11 +190,14 @@ namespace MediaBrowser.Controller.Library
/// </summary>
/// <param name="path">The path.</param>
/// <param name="directoryService">The directory service.</param>
/// <param name="fileSystem">The file system.</param>
/// <returns><c>true</c> if [is season folder] [the specified path]; otherwise, <c>false</c>.</returns>
private static bool IsSeasonFolder(string path, IDirectoryService directoryService)
private static bool IsSeasonFolder(string path, IDirectoryService directoryService, IFileSystem fileSystem)
{
// It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3
return GetSeasonNumberFromPath(path) != null && !directoryService.GetFiles(path).Any(i => EntityResolutionHelper.IsAudioFile(i.FullName) && !string.Equals(Path.GetFileNameWithoutExtension(i.FullName), BaseItem.ThemeSongFilename));
return GetSeasonNumberFromPath(path) != null &&
!directoryService.GetFiles(path)
.Any(i => EntityResolutionHelper.IsAudioFile(i.FullName) && !string.Equals(fileSystem.GetFileNameWithoutExtension(i), BaseItem.ThemeSongFilename));
}
/// <summary>
@@ -204,7 +208,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="fileSystemChildren">The file system children.</param>
/// <param name="directoryService">The directory service.</param>
/// <returns><c>true</c> if [is series folder] [the specified path]; otherwise, <c>false</c>.</returns>
public static bool IsSeriesFolder(string path, bool considerSeasonlessSeries, IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
public static bool IsSeriesFolder(string path, bool considerSeasonlessSeries, IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService, IFileSystem fileSystem)
{
// A folder with more than 3 non-season folders in will not becounted as a series
var nonSeriesFolders = 0;
@@ -225,7 +229,7 @@ namespace MediaBrowser.Controller.Library
if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
if (IsSeasonFolder(child.FullName, directoryService))
if (IsSeasonFolder(child.FullName, directoryService, fileSystem))
{
return true;
}

View File

@@ -322,6 +322,7 @@
<Compile Include="Sync\ICloudSyncProvider.cs" />
<Compile Include="Sync\ISyncManager.cs" />
<Compile Include="Sync\ISyncProvider.cs" />
<Compile Include="Sync\ISyncRepository.cs" />
<Compile Include="Themes\IAppThemeManager.cs" />
<Compile Include="Themes\InternalThemeImage.cs" />
</ItemGroup>

View File

@@ -13,7 +13,7 @@ namespace MediaBrowser.Controller.Sync
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task.</returns>
Task<List<SyncJob>> CreateJob(SyncJobRequest request);
Task<SyncJobCreationResult> CreateJob(SyncJobRequest request);
/// <summary>
/// Gets the jobs.
@@ -21,25 +21,12 @@ namespace MediaBrowser.Controller.Sync
/// <returns>QueryResult&lt;SyncJob&gt;.</returns>
QueryResult<SyncJob> GetJobs(SyncJobQuery query);
/// <summary>
/// Gets the schedules.
/// </summary>
/// <returns>QueryResult&lt;SyncSchedule&gt;.</returns>
QueryResult<SyncSchedule> GetSchedules(SyncScheduleQuery query);
/// <summary>
/// Gets the job.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>SyncJob.</returns>
SyncJob GetJob(string id);
/// <summary>
/// Gets the schedule.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>SyncSchedule.</returns>
SyncSchedule GetSchedule(string id);
/// <summary>
/// Cancels the job.
@@ -48,13 +35,6 @@ namespace MediaBrowser.Controller.Sync
/// <returns>Task.</returns>
Task CancelJob(string id);
/// <summary>
/// Cancels the schedule.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>Task.</returns>
Task CancelSchedule(string id);
/// <summary>
/// Adds the parts.
/// </summary>

View File

@@ -0,0 +1,58 @@
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Sync;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Sync
{
public interface ISyncRepository
{
/// <summary>
/// Gets the job.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>SyncJob.</returns>
SyncJob GetJob(string id);
/// <summary>
/// Creates the specified job.
/// </summary>
/// <param name="job">The job.</param>
/// <returns>Task.</returns>
Task Create(SyncJob job);
/// <summary>
/// Updates the specified job.
/// </summary>
/// <param name="job">The job.</param>
/// <returns>Task.</returns>
Task Update(SyncJob job);
/// <summary>
/// Gets the jobs.
/// </summary>
/// <param name="query">The query.</param>
/// <returns>QueryResult&lt;SyncJob&gt;.</returns>
QueryResult<SyncJob> GetJobs(SyncJobQuery query);
/// <summary>
/// Gets the job item.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>SyncJobItem.</returns>
SyncJobItem GetJobItem(string id);
/// <summary>
/// Creates the specified job item.
/// </summary>
/// <param name="jobItem">The job item.</param>
/// <returns>Task.</returns>
Task Create(SyncJobItem jobItem);
/// <summary>
/// Updates the specified job item.
/// </summary>
/// <param name="jobItem">The job item.</param>
/// <returns>Task.</returns>
Task Update(SyncJobItem jobItem);
}
}