66 lines
2.0 KiB
VB.net
66 lines
2.0 KiB
VB.net
Imports DigitalData.Modules.Base
|
|
Imports DigitalData.Modules.Logging
|
|
Imports ECM.JobRunner.Common
|
|
|
|
Public Class JobStatus
|
|
Inherits BaseClass
|
|
|
|
Public ReadOnly Entries As New List(Of StatusItem)
|
|
|
|
Public Sub New(pLogConfig As LogConfig)
|
|
MyBase.New(pLogConfig)
|
|
End Sub
|
|
|
|
Public Sub Start(pJob As Quartz.IJobExecutionContext)
|
|
Dim oStatus = GetJobStatus(pJob)
|
|
|
|
Logger.Info("Starting Job [{0}]", oStatus.Id)
|
|
|
|
If oStatus IsNot Nothing Then
|
|
oStatus.Name = pJob.JobDetail.Key.Name
|
|
oStatus.StartTime = Date.Now
|
|
oStatus.Executing = True
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub Update(pJob As Quartz.IJobExecutionContext, pCurrent As Integer, pTotal As Integer)
|
|
Dim oStatus = GetJobStatus(pJob)
|
|
|
|
Logger.Debug("Updating Job [{0}] with Status [{1}/{2}]", oStatus.Id, pCurrent, pTotal)
|
|
|
|
If oStatus IsNot Nothing Then
|
|
oStatus.ProgressTotal = pTotal
|
|
oStatus.ProgressCurrent = pCurrent
|
|
oStatus.ExecutionTime = pJob.JobRunTime
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub Complete(pJob As Quartz.IJobExecutionContext)
|
|
Dim oStatus = GetJobStatus(pJob)
|
|
|
|
Logger.Info("Completing Job [{0}]", oStatus.Id)
|
|
|
|
If oStatus IsNot Nothing Then
|
|
oStatus.ProgressCurrent = oStatus.ProgressTotal
|
|
oStatus.ExecutionTime = pJob.JobRunTime
|
|
oStatus.Executing = False
|
|
oStatus.CompleteTime = Date.Now
|
|
End If
|
|
End Sub
|
|
|
|
Private Function GetJobStatus(pJob As Quartz.IJobExecutionContext) As StatusItem
|
|
Dim oJobId = GetJobId(pJob)
|
|
Dim oExists = Entries.Where(Function(e) e.Id = oJobId).Any()
|
|
|
|
If Not oExists Then
|
|
Entries.Add(New StatusItem With {.Id = oJobId})
|
|
End If
|
|
|
|
Return Entries.Where(Function(e) e.Id = oJobId).SingleOrDefault()
|
|
End Function
|
|
|
|
Private Function GetJobId(pJob As Quartz.IJobExecutionContext) As String
|
|
Return pJob.JobDetail.Key.ToString() & pJob.FireTimeUtc.ToString("u")
|
|
End Function
|
|
End Class
|