Skip to content

Commit

Permalink
Upgrade to Quartz 2
Browse files Browse the repository at this point in the history
  • Loading branch information
mausch committed Aug 12, 2012
1 parent 506af33 commit cd6195b
Show file tree
Hide file tree
Showing 22 changed files with 11,610 additions and 8,596 deletions.
6 changes: 3 additions & 3 deletions QuartzNetWebConsole.Views/JobWithContext.vb
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
Imports Quartz

Public Class JobWithContext
Public ReadOnly Job As JobDetail
Public ReadOnly JobContext As JobExecutionContext
Public ReadOnly Job As IJobDetail
Public ReadOnly JobContext As IJobExecutionContext
Public ReadOnly Interruptible As Boolean

Public Sub New(ByVal job As JobDetail, ByVal jobContext As JobExecutionContext, ByVal interruptible As Boolean)
Public Sub New(ByVal job As IJobDetail, ByVal jobContext As IJobExecutionContext, ByVal interruptible As Boolean)
If job Is Nothing Then
Throw New ArgumentNullException("job")
End If
Expand Down
4 changes: 2 additions & 2 deletions QuartzNetWebConsole.Views/TriggerWithState.vb
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Imports Quartz

Public Class TriggerWithState
Public ReadOnly Trigger As Trigger
Public ReadOnly Trigger As ITrigger
Public ReadOnly State As TriggerState

Public Sub New(ByVal trigger As Trigger, ByVal state As TriggerState)
Public Sub New(ByVal trigger As ITrigger, ByVal state As TriggerState)
Me.Trigger = trigger
Me.State = state
End Sub
Expand Down
53 changes: 26 additions & 27 deletions QuartzNetWebConsole.Views/Views.vb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
Imports MiniMVC
Imports Quartz
Imports System.Web
Imports Quartz.Impl.Triggers

Public Module Views
Public Function Pager(pagination As PaginationInfo) As XElement
Expand Down Expand Up @@ -81,7 +82,7 @@ Public Module Views
<div style="float: left">
Job store: <%= metadata.JobStoreType %><br/>
Supports persistence: <%= YesNo(metadata.JobStoreSupportsPersistence) %><br/>
Number of jobs executed: <%= metadata.NumJobsExecuted %><br/>
Number of jobs executed: <%= metadata.NumberOfJobsExecuted %><br/>
Running since: <%= metadata.RunningSince %><br/>
Status: <%= If(scheduler.InStandbyMode, "stand-by", "running") %>
<br/>
Expand All @@ -107,7 +108,7 @@ Public Module Views
<tr>
<th>Type</th>
</tr>
<%= From l In scheduler.SchedulerListeners.Cast(Of Object)()
<%= From l In scheduler.ListenerManager.GetSchedulerListeners()
Select
<tr>
<td><%= l.GetType() %></td>
Expand Down Expand Up @@ -276,32 +277,30 @@ Public Module Views
<th>Description</th>
<th>Type</th>
<th>Durable</th>
<th>Stateful</th>
<th>Volatile</th>
<th>Persist data after execution</th>
<th>Concurrent execution disallowed</th>
<th>Requests recovery</th>
<th>Running since</th>
<th>Listeners</th>
<th></th>
</tr>
<%= From j In jobs
Let op = Function(method As String) "scheduler.ashx?method=" + method +
"&jobName=" + j.Job.Name +
"&groupName=" + j.Job.Group +
"&jobName=" + j.Job.Key.Name +
"&groupName=" + j.Job.Key.Group +
"&next=" + HttpUtility.UrlEncode(thisUrl)
Select
<tr id=<%= j.Job.FullName %>
class=<%= If(highlight = j.Job.FullName, "highlight", "") %>>
<td><%= j.Job.Name %></td>
<tr id=<%= j.Job.Key.ToString() %>
class=<%= If(highlight = j.Job.Key.ToString(), "highlight", "") %>>
<td><%= j.Job.Key.Name %></td>
<td><%= j.Job.Description %></td>
<td><%= j.Job.JobType %></td>
<td><%= YesNo(j.Job.Durable) %></td>
<td><%= YesNo(j.Job.Stateful) %></td>
<td><%= YesNo(j.Job.Volatile) %></td>
<td><%= YesNo(j.Job.PersistJobDataAfterExecution) %></td>
<td><%= YesNo(j.Job.ConcurrentExectionDisallowed) %></td>
<td><%= YesNo(j.Job.RequestsRecovery) %></td>
<td><%= j.JobContext.FireTimeUtc %></td>
<td><%= j.Job.JobListenerNames.Length %></td>
<td>
<a href=<%= "triggersByJob.ashx?group=" + j.Job.Group + "&job=" + j.Job.Name %>>Triggers</a>
<a href=<%= "triggersByJob.ashx?group=" + j.Job.Key.Group + "&job=" + j.Job.Key.Name %>>Triggers</a>
<%= SimpleForm(op("DeleteJob"), "Delete") %>
<%= SimpleForm(op("PauseJob"), "Pause") %>
<%= SimpleForm(op("ResumeJob"), "Resume") %>
Expand Down Expand Up @@ -356,27 +355,27 @@ Public Module Views
</tr>
<%= From tr In triggers
Let trigger = tr.Trigger
Let high = highlight = trigger.FullName
Let simpleTrigger = TryCast(trigger, SimpleTrigger)
Let cronTrigger = TryCast(trigger, CronTrigger)
Let high = highlight = trigger.Key.ToString()
Let simpleTrigger = TryCast(trigger, SimpleTriggerImpl)
Let cronTrigger = TryCast(trigger, CronTriggerImpl)
Let op = Function(method As String) "scheduler.ashx?method=" & method &
"&triggerName=" + trigger.Name +
"&groupName=" + trigger.Group +
"&triggerName=" + trigger.Key.Name +
"&groupName=" + trigger.Key.Group +
"&next=" + HttpUtility.UrlEncode(thisUrl)
Select
<tr id=<%= trigger.FullName %>
class=<%= If(highlight = trigger.FullName, highlight, "") %>>
<td><%= trigger.Name %></td>
<tr id=<%= trigger.Key.ToString() %>
class=<%= If(highlight = trigger.Key.ToString(), highlight, "") %>>
<td><%= trigger.Key.Name %></td>
<td><%= trigger.Description %></td>
<td><%= trigger.Priority %></td>
<td>
<a href=<%= "jobGroup.ashx?group=" + trigger.JobGroup %>><%= trigger.JobGroup %></a>
<a href=<%= "jobGroup.ashx?group=" + trigger.JobKey.Group %>><%= trigger.JobKey.Group %></a>
</td>
<td>
<a href=<%= "jobGroup.ashx?group=" + trigger.JobGroup +
"&highlight=" + trigger.JobGroup + "." + trigger.JobName +
"#" + trigger.JobGroup + "." + trigger.JobName %>>
<%= trigger.JobGroup %>
<a href=<%= "jobGroup.ashx?group=" + trigger.JobKey.Group +
"&highlight=" + trigger.JobKey.Group + "." + trigger.JobKey.Name +
"#" + trigger.JobKey.Group + "." + trigger.JobKey.Name %>>
<%= trigger.JobKey.Group %>
</a>
</td>
<td><%= trigger.StartTimeUtc %></td>
Expand Down
101 changes: 76 additions & 25 deletions QuartzNetWebConsole/AbstractLogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,37 @@

namespace QuartzNetWebConsole {
public abstract class AbstractLogger : ILogger {
public virtual void JobScheduled(Trigger trigger) {}

public virtual void JobUnscheduled(string triggerName, string triggerGroup) {}

public virtual void TriggerFinalized(Trigger trigger) {}

public virtual void TriggersPaused(string triggerName, string triggerGroup) {}

public virtual void TriggersResumed(string triggerName, string triggerGroup) {}

public virtual void JobsPaused(string jobName, string jobGroup) {}

public virtual void JobsResumed(string jobName, string jobGroup) {}

public virtual void SchedulerError(string msg, SchedulerException cause) {}

public virtual void SchedulerShutdown() {}
public virtual void JobToBeExecuted(IJobExecutionContext context) {
throw new NotImplementedException();
}

public virtual void JobToBeExecuted(JobExecutionContext context) {}
public virtual void JobExecutionVetoed(IJobExecutionContext context) {
throw new NotImplementedException();
}

public virtual void JobExecutionVetoed(JobExecutionContext context) {}
public virtual void JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException) {
throw new NotImplementedException();
}

public virtual void JobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {}
public virtual void TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode) {
throw new NotImplementedException();
}

string IJobListener.Name {
get { return "QuartzNetWebConsole.Logger"; }
}

public virtual void TriggerFired(Trigger trigger, JobExecutionContext context) {}
public virtual void TriggerFired(ITrigger trigger, IJobExecutionContext context) {
throw new NotImplementedException();
}

public bool VetoJobExecution(Trigger trigger, JobExecutionContext context) {
public bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context) {
return false;
}

public virtual void TriggerMisfired(Trigger trigger) {}

public virtual void TriggerComplete(Trigger trigger, JobExecutionContext context, SchedulerInstruction triggerInstructionCode) {}
public virtual void TriggerMisfired(ITrigger trigger) {
throw new NotImplementedException();
}

string ITriggerListener.Name {
get { return "QuartzNetWebConsole.Logger"; }
Expand All @@ -59,5 +53,62 @@ IEnumerator IEnumerable.GetEnumerator() {
public abstract Expression Expression { get; }
public abstract Type ElementType { get; }
public abstract IQueryProvider Provider { get; }
public virtual void JobScheduled(ITrigger trigger) {

}

public virtual void JobUnscheduled(TriggerKey triggerKey) {
}

public virtual void TriggerFinalized(ITrigger trigger) {
}

public virtual void TriggerPaused(TriggerKey triggerKey) {
}

public virtual void TriggersPaused(string triggerGroup) {
}

public virtual void TriggerResumed(TriggerKey triggerKey) {
}

public virtual void TriggersResumed(string triggerGroup) {
}

public virtual void JobAdded(IJobDetail jobDetail) {
}

public virtual void JobDeleted(JobKey jobKey) {
}

public virtual void JobPaused(JobKey jobKey) {
}

public virtual void JobsPaused(string jobGroup) {
}

public virtual void JobResumed(JobKey jobKey) {
}

public virtual void JobsResumed(string jobGroup) {
}

public virtual void SchedulerError(string msg, SchedulerException cause) {
}

public virtual void SchedulerInStandbyMode() {
}

public virtual void SchedulerStarted() {
}

public virtual void SchedulerShutdown() {
}

public virtual void SchedulerShuttingdown() {
}

public virtual void SchedulingDataCleared() {
}
}
}
15 changes: 8 additions & 7 deletions QuartzNetWebConsole/Controllers/IndexController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,24 @@ public class IndexController : Controller {
private readonly IScheduler scheduler = Setup.Scheduler();

public override void Execute(HttpContextBase context) {
var triggerGroups = scheduler.TriggerGroupNames
var triggerGroups = scheduler.GetTriggerGroupNames()
.Select(t => new GroupWithStatus(t, scheduler.IsTriggerGroupPaused(t)))
.ToArray();
var jobGroups = scheduler.JobGroupNames

var jobGroups = scheduler.GetJobGroupNames()
.Select(j => new GroupWithStatus(j, scheduler.IsJobGroupPaused(j)))
.ToArray();
var calendars = scheduler.CalendarNames

var calendars = scheduler.GetCalendarNames()
.Select(name => Helpers.KV(name, scheduler.GetCalendar(name).Description))
.ToArray();

var jobListeners = scheduler.GlobalJobListeners
.Cast<IJobListener>()

var jobListeners = scheduler.ListenerManager.GetJobListeners()
.Select(j => Helpers.KV(j.Name, j.GetType()))
.ToArray();

var triggerListeners = scheduler.GlobalTriggerListeners
.Cast<ITriggerListener>()
var triggerListeners = scheduler.ListenerManager.GetTriggerListeners()
.Select(j => Helpers.KV(j.Name, j.GetType()))
.ToArray();

Expand Down
9 changes: 5 additions & 4 deletions QuartzNetWebConsole/Controllers/JobGroupController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Xml.Linq;
using MiniMVC;
using Quartz;
using Quartz.Impl.Matchers;
using QuartzNetWebConsole.Views;

namespace QuartzNetWebConsole.Controllers {
Expand All @@ -11,12 +12,12 @@ public class JobGroupController : Controller {

public override void Execute(HttpContextBase context) {
var group = context.Request.QueryString["group"];
var jobNames = scheduler.GetJobNames(group);
var runningJobs = scheduler.GetCurrentlyExecutingJobs().Cast<JobExecutionContext>();
var jobNames = scheduler.GetJobKeys(GroupMatcher<JobKey>.GroupEquals(group));
var runningJobs = scheduler.GetCurrentlyExecutingJobs();
var jobs = jobNames.Select(j => {
var job = scheduler.GetJobDetail(j, group);
var job = scheduler.GetJobDetail(j);
var interruptible = typeof (IInterruptableJob).IsAssignableFrom(job.JobType);
var jobContext = runningJobs.FirstOrDefault(r => r.JobDetail.FullName == job.FullName);
var jobContext = runningJobs.FirstOrDefault(r => r.JobDetail.Key.ToString() == job.Key.ToString());
return new JobWithContext(job, jobContext, interruptible);
});
var paused = scheduler.IsJobGroupPaused(group);
Expand Down
9 changes: 5 additions & 4 deletions QuartzNetWebConsole/Controllers/TriggerGroupController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Xml.Linq;
using MiniMVC;
using Quartz;
using Quartz.Impl.Matchers;
using QuartzNetWebConsole.Views;

namespace QuartzNetWebConsole.Controllers {
Expand All @@ -11,11 +12,11 @@ public class TriggerGroupController : Controller {

public override void Execute(HttpContextBase context) {
var group = context.Request.QueryString["group"];
var triggerNames = scheduler.GetTriggerNames(group);
var triggers = triggerNames
var triggerKeys = scheduler.GetTriggerKeys(GroupMatcher<TriggerKey>.GroupEquals(group));
var triggers = triggerKeys
.Select(t => {
var trigger = scheduler.GetTrigger(t, group);
var state = scheduler.GetTriggerState(t, group);
var trigger = scheduler.GetTrigger(t);
var state = scheduler.GetTriggerState(t);
return new TriggerWithState(trigger, state);
});
var thisUrl = context.Request.RawUrl;
Expand Down
5 changes: 3 additions & 2 deletions QuartzNetWebConsole/Controllers/TriggersByJobController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ public class TriggersByJobController : Controller {
public override void Execute(HttpContextBase context) {
var group = context.Request.QueryString["group"];
var job = context.Request.QueryString["job"];
var jobKey = new JobKey(job, group);
var thisUrl = context.Request.RawUrl;
var triggers = scheduler.GetTriggersOfJob(job, group)
var triggers = scheduler.GetTriggersOfJob(jobKey)
.Select(t => {
var state = scheduler.GetTriggerState(t.Name, t.Group);
var state = scheduler.GetTriggerState(t.Key);
return new TriggerWithState(t, state);
});
var highlight = context.Request.QueryString["highlight"];
Expand Down
Loading

0 comments on commit cd6195b

Please sign in to comment.