Added summary for TaskExecutor, TaskManager, TrangaTask
This commit is contained in:
parent
c1a3532a6c
commit
124c644db1
@ -1,7 +1,20 @@
|
|||||||
namespace Tranga;
|
namespace Tranga;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Executes TrangaTasks
|
||||||
|
/// Based on the TrangaTask.Task a method is called.
|
||||||
|
/// The chapterCollection is updated with new Publications/Chapters.
|
||||||
|
/// </summary>
|
||||||
public static class TaskExecutor
|
public static class TaskExecutor
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Executes TrangaTask.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="connectors">List of all available Connectors</param>
|
||||||
|
/// <param name="trangaTask">Task to execute</param>
|
||||||
|
/// <param name="chapterCollection">Current chapterCollection to update</param>
|
||||||
|
/// <exception cref="ArgumentException">Is thrown when there is no Connector available with the name of the TrangaTask.connectorName</exception>
|
||||||
public static void Execute(Connector[] connectors, TrangaTask trangaTask, Dictionary<Publication, List<Chapter>> chapterCollection)
|
public static void Execute(Connector[] connectors, TrangaTask trangaTask, Dictionary<Publication, List<Chapter>> chapterCollection)
|
||||||
{
|
{
|
||||||
Connector? connector = connectors.FirstOrDefault(c => c.name == trangaTask.connectorName);
|
Connector? connector = connectors.FirstOrDefault(c => c.name == trangaTask.connectorName);
|
||||||
|
@ -3,6 +3,10 @@ using Tranga.Connectors;
|
|||||||
|
|
||||||
namespace Tranga;
|
namespace Tranga;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Manages all TrangaTasks.
|
||||||
|
/// Provides a Threaded environment to execute Tasks, and still manage the Task-Collection
|
||||||
|
/// </summary>
|
||||||
public class TaskManager
|
public class TaskManager
|
||||||
{
|
{
|
||||||
private readonly Dictionary<Publication, List<Chapter>> _chapterCollection;
|
private readonly Dictionary<Publication, List<Chapter>> _chapterCollection;
|
||||||
@ -11,6 +15,10 @@ public class TaskManager
|
|||||||
private readonly Connector[] connectors;
|
private readonly Connector[] connectors;
|
||||||
private readonly string folderPath;
|
private readonly string folderPath;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="folderPath">Local path to save data (Manga) to</param>
|
||||||
public TaskManager(string folderPath)
|
public TaskManager(string folderPath)
|
||||||
{
|
{
|
||||||
this.folderPath = folderPath;
|
this.folderPath = folderPath;
|
||||||
@ -34,6 +42,10 @@ public class TaskManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Forces the execution of a given task
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="task">Task to execute</param>
|
||||||
public void ExecuteTaskNow(TrangaTask task)
|
public void ExecuteTaskNow(TrangaTask task)
|
||||||
{
|
{
|
||||||
if (!this._allTasks.Contains(task))
|
if (!this._allTasks.Contains(task))
|
||||||
@ -46,6 +58,15 @@ public class TaskManager
|
|||||||
t.Start();
|
t.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates and adds a new Task to the task-Collection
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="task">TrangaTask.Task to later execute</param>
|
||||||
|
/// <param name="connectorName">Name of the connector to use</param>
|
||||||
|
/// <param name="publication">Publication to execute Task on, can be null in case of unrelated Task</param>
|
||||||
|
/// <param name="reoccurrence">Time-Interval between Executions</param>
|
||||||
|
/// <param name="language">language, should Task require parameter. Can be empty</param>
|
||||||
|
/// <exception cref="ArgumentException">Is thrown when connectorName is not a available Connector</exception>
|
||||||
public void AddTask(TrangaTask.Task task, string connectorName, Publication? publication, TimeSpan reoccurrence,
|
public void AddTask(TrangaTask.Task task, string connectorName, Publication? publication, TimeSpan reoccurrence,
|
||||||
string language = "")
|
string language = "")
|
||||||
{
|
{
|
||||||
@ -63,6 +84,12 @@ public class TaskManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes Task from task-collection
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="task">TrangaTask.Task type</param>
|
||||||
|
/// <param name="connectorName">Name of Connector that was used</param>
|
||||||
|
/// <param name="publication">Publication that was used</param>
|
||||||
public void RemoveTask(TrangaTask.Task task, string connectorName, Publication? publication)
|
public void RemoveTask(TrangaTask.Task task, string connectorName, Publication? publication)
|
||||||
{
|
{
|
||||||
_allTasks.RemoveWhere(trangaTask =>
|
_allTasks.RemoveWhere(trangaTask =>
|
||||||
@ -71,11 +98,19 @@ public class TaskManager
|
|||||||
ExportTasks(Directory.GetCurrentDirectory());
|
ExportTasks(Directory.GetCurrentDirectory());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>All available Connectors</returns>
|
||||||
public Dictionary<string, Connector> GetAvailableConnectors()
|
public Dictionary<string, Connector> GetAvailableConnectors()
|
||||||
{
|
{
|
||||||
return this.connectors.ToDictionary(connector => connector.name, connector => connector);
|
return this.connectors.ToDictionary(connector => connector.name, connector => connector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>All TrangaTasks in task-collection</returns>
|
||||||
public TrangaTask[] GetAllTasks()
|
public TrangaTask[] GetAllTasks()
|
||||||
{
|
{
|
||||||
TrangaTask[] ret = new TrangaTask[_allTasks.Count];
|
TrangaTask[] ret = new TrangaTask[_allTasks.Count];
|
||||||
@ -83,11 +118,19 @@ public class TaskManager
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>All added Publications</returns>
|
||||||
public Publication[] GetAllPublications()
|
public Publication[] GetAllPublications()
|
||||||
{
|
{
|
||||||
return this._chapterCollection.Keys.ToArray();
|
return this._chapterCollection.Keys.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shuts down the taskManager.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="force">If force is true, tasks are aborted.</param>
|
||||||
public void Shutdown(bool force = false)
|
public void Shutdown(bool force = false)
|
||||||
{
|
{
|
||||||
_continueRunning = false;
|
_continueRunning = false;
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
namespace Tranga;
|
namespace Tranga;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stores information on Task
|
||||||
|
/// </summary>
|
||||||
public class TrangaTask
|
public class TrangaTask
|
||||||
{
|
{
|
||||||
public TimeSpan reoccurrence { get; }
|
public TimeSpan reoccurrence { get; }
|
||||||
@ -24,6 +27,10 @@ public class TrangaTask
|
|||||||
this.language = language;
|
this.language = language;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>True if elapsed time since last execution is greater than set interval</returns>
|
||||||
public bool ShouldExecute()
|
public bool ShouldExecute()
|
||||||
{
|
{
|
||||||
return DateTime.Now.Subtract(this.lastExecuted) > reoccurrence;
|
return DateTime.Now.Subtract(this.lastExecuted) > reoccurrence;
|
||||||
|
Loading…
Reference in New Issue
Block a user