diff --git a/ClickForensics.Quartz.Manager.Setup/ClickForensics.Quartz.Manager.Setup.vdproj b/ClickForensics.Quartz.Manager.Setup/ClickForensics.Quartz.Manager.Setup.vdproj index 3924218..484aa70 100644 --- a/ClickForensics.Quartz.Manager.Setup/ClickForensics.Quartz.Manager.Setup.vdproj +++ b/ClickForensics.Quartz.Manager.Setup/ClickForensics.Quartz.Manager.Setup.vdproj @@ -51,6 +51,12 @@ } "Entry" { + "MsmKey" = "8:_B9E7DEFA02B1EA7ED4BDCBA0CCCEC706" + "OwnerKey" = "8:_0FE29295DCC442888A7872AF7AD116EA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_UNDEFINED" "OwnerKey" = "8:_0FE29295DCC442888A7872AF7AD116EA" "MsmSig" = "8:_UNDEFINED" @@ -70,6 +76,12 @@ "Entry" { "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_B9E7DEFA02B1EA7ED4BDCBA0CCCEC706" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" "OwnerKey" = "8:_3DAE5C8DAFA58A50BA1AC4FAE556312D" "MsmSig" = "8:_UNDEFINED" } @@ -98,6 +110,19 @@ "PrerequisitesLocation" = "2:1" "Url" = "8:" "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.0,Profile=Client" + { + "Name" = "8:Microsoft .NET Framework 4 Client Profile (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.0,Profile=Client" + } + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1" + { + "Name" = "8:Windows Installer 3.1" + "ProductCode" = "8:Microsoft.Windows.Installer.3.1" + } + } } } "Release" @@ -122,6 +147,19 @@ "PrerequisitesLocation" = "2:1" "Url" = "8:" "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.0,Profile=Client" + { + "Name" = "8:Microsoft .NET Framework 4 Client Profile (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.0,Profile=Client" + } + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1" + { + "Name" = "8:Windows Installer 3.1" + "ProductCode" = "8:Microsoft.Windows.Installer.3.1" + } + } } } } @@ -218,7 +256,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:Quartz, Version=2.0.0.25406, Culture=neutral, processorArchitecture=MSIL" + "AssemblyAsmDisplayName" = "8:Quartz, Version=2.0.0.100, Culture=neutral, processorArchitecture=MSIL" "ScatterAssemblies" { "_8E1320DBDAEA0BC3DE13EEE60E6CD2AB" @@ -245,6 +283,37 @@ "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B9E7DEFA02B1EA7ED4BDCBA0CCCEC706" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_B9E7DEFA02B1EA7ED4BDCBA0CCCEC706" + { + "Name" = "8:log4net.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:log4net.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_124E947A1D3342438C347971E13FC4F8" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } } "FileType" { @@ -302,7 +371,7 @@ "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Quartz.Net-2.0 Manager" "ProductCode" = "8:{9022D442-B545-46AE-AA13-8FAB824F340D}" - "PackageCode" = "8:{FE9636A0-F3BE-4A33-B153-B66FC26458FB}" + "PackageCode" = "8:{1655B15A-9FE3-4F20-8B9B-32E9DC05C99E}" "UpgradeCode" = "8:{26F74FF8-741D-4585-9DAB-CF8BAFE8CF63}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" @@ -823,7 +892,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_0FE29295DCC442888A7872AF7AD116EA" { - "SourcePath" = "8:..\\ClickForensics.Quartz.Manager\\obj\\Debug\\ClickForensics.Quartz.Manager.exe" + "SourcePath" = "8:..\\ClickForensics.Quartz.Manager\\obj\\Release\\ClickForensics.Quartz.Manager.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_124E947A1D3342438C347971E13FC4F8" diff --git a/ClickForensics.Quartz.Manager/AddJobForm.cs b/ClickForensics.Quartz.Manager/AddJobForm.cs index 3ff1e99..a82483e 100644 --- a/ClickForensics.Quartz.Manager/AddJobForm.cs +++ b/ClickForensics.Quartz.Manager/AddJobForm.cs @@ -115,7 +115,7 @@ namespace ClickForensics.Quartz.Manager private IJobDetail getJobDetail() { IJobDetail detail = JobBuilder - .NewJob() + .Create() .OfType(getJobType()) .WithDescription(txtJobDescription.Text) .WithIdentity(new JobKey(txtJobName.Text, txtJobGroup.Text)) diff --git a/ClickForensics.Quartz.Manager/QuartzScheduler.cs b/ClickForensics.Quartz.Manager/QuartzScheduler.cs index fa9556d..59adaa9 100644 --- a/ClickForensics.Quartz.Manager/QuartzScheduler.cs +++ b/ClickForensics.Quartz.Manager/QuartzScheduler.cs @@ -17,302 +17,302 @@ using Quartz.Util; namespace ClickForensics.Quartz.Manager { - public class QuartzScheduler - { - public QuartzScheduler(string server, int port, string scheduler) - { - Address = string.Format("tcp://{0}:{1}/{2}", server, port, scheduler); - _schedulerFactory = new StdSchedulerFactory(getProperties(Address)); + public class QuartzScheduler + { + public QuartzScheduler(string server, int port, string scheduler) + { + Address = string.Format("tcp://{0}:{1}/{2}", server, port, scheduler); + _schedulerFactory = new StdSchedulerFactory(getProperties(Address)); - try - { - _scheduler = _schedulerFactory.GetScheduler(); - } + try + { + _scheduler = _schedulerFactory.GetScheduler(); + } catch (SchedulerException) - { - MessageBox.Show("Unable to connect to the specified server", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - } - } - public string Address { get; private set; } - private NameValueCollection getProperties(string address) - { - NameValueCollection properties = new NameValueCollection(); - properties["quartz.scheduler.instanceName"] = "RemoteClient"; - properties["quartz.scheduler.proxy"] = "true"; - properties["quartz.threadPool.threadCount"] = "0"; - properties["quartz.scheduler.proxy.address"] = address; - return properties; - } - public IScheduler GetScheduler() - { - return _scheduler; - } - public DataTable GetJobs() - { - DataTable table = new DataTable(); - table.Columns.Add("GroupName"); - table.Columns.Add("JobName"); - table.Columns.Add("JobDescription"); - table.Columns.Add("TriggerName"); - table.Columns.Add("TriggerGroupName"); - table.Columns.Add("TriggerType"); - table.Columns.Add("TriggerState"); - table.Columns.Add("NextFireTime"); - table.Columns.Add("PreviousFireTime"); - var jobGroups = GetScheduler().GetJobGroupNames(); - foreach (string group in jobGroups) - { - var groupMatcher = GroupMatcher.GroupContains(group); - var jobKeys = GetScheduler().GetJobKeys(groupMatcher); - foreach (var jobKey in jobKeys) - { - var detail = GetScheduler().GetJobDetail(jobKey); - var triggers = GetScheduler().GetTriggersOfJob(jobKey); - foreach (ITrigger trigger in triggers) - { - DataRow row = table.NewRow(); - row["GroupName"] = group; - row["JobName"] = jobKey.Name; - row["JobDescription"] = detail.Description; - row["TriggerName"] = trigger.Key.Name; - row["TriggerGroupName"] = trigger.Key.Group; - row["TriggerType"] = trigger.GetType().Name; - row["TriggerState"] = GetScheduler().GetTriggerState(trigger.Key); - DateTimeOffset? nextFireTime = trigger.GetNextFireTimeUtc(); - if (nextFireTime.HasValue) - { - row["NextFireTime"] = TimeZone.CurrentTimeZone.ToLocalTime(nextFireTime.Value.DateTime); - } + { + MessageBox.Show("Unable to connect to the specified server", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } + public string Address { get; private set; } + private NameValueCollection getProperties(string address) + { + NameValueCollection properties = new NameValueCollection(); + properties["quartz.scheduler.instanceName"] = "RemoteClient"; + properties["quartz.scheduler.proxy"] = "true"; + properties["quartz.threadPool.threadCount"] = "0"; + properties["quartz.scheduler.proxy.address"] = address; + return properties; + } + public IScheduler GetScheduler() + { + return _scheduler; + } + public DataTable GetJobs() + { + DataTable table = new DataTable(); + table.Columns.Add("GroupName"); + table.Columns.Add("JobName"); + table.Columns.Add("JobDescription"); + table.Columns.Add("TriggerName"); + table.Columns.Add("TriggerGroupName"); + table.Columns.Add("TriggerType"); + table.Columns.Add("TriggerState"); + table.Columns.Add("NextFireTime"); + table.Columns.Add("PreviousFireTime"); + var jobGroups = GetScheduler().GetJobGroupNames(); + foreach (string group in jobGroups) + { + var groupMatcher = GroupMatcher.GroupContains(group); + var jobKeys = GetScheduler().GetJobKeys(groupMatcher); + foreach (var jobKey in jobKeys) + { + var detail = GetScheduler().GetJobDetail(jobKey); + var triggers = GetScheduler().GetTriggersOfJob(jobKey); + foreach (ITrigger trigger in triggers) + { + DataRow row = table.NewRow(); + row["GroupName"] = group; + row["JobName"] = jobKey.Name; + row["JobDescription"] = detail.Description; + row["TriggerName"] = trigger.Key.Name; + row["TriggerGroupName"] = trigger.Key.Group; + row["TriggerType"] = trigger.GetType().Name; + row["TriggerState"] = GetScheduler().GetTriggerState(trigger.Key); + DateTimeOffset? nextFireTime = trigger.GetNextFireTimeUtc(); + if (nextFireTime.HasValue) + { + row["NextFireTime"] = TimeZone.CurrentTimeZone.ToLocalTime(nextFireTime.Value.DateTime); + } - DateTimeOffset? previousFireTime = trigger.GetPreviousFireTimeUtc(); - if (previousFireTime.HasValue) - { - row["PreviousFireTime"] = TimeZone.CurrentTimeZone.ToLocalTime(previousFireTime.Value.DateTime); - } + DateTimeOffset? previousFireTime = trigger.GetPreviousFireTimeUtc(); + if (previousFireTime.HasValue) + { + row["PreviousFireTime"] = TimeZone.CurrentTimeZone.ToLocalTime(previousFireTime.Value.DateTime); + } - table.Rows.Add(row); - } - } - } - return table; - } + table.Rows.Add(row); + } + } + } + return table; + } - public void ScheduleOneTimeJob(Type jobType, JobDataMap dataMap, int clientID) - { - string name = string.Format("{0}-{1}", jobType.Name, clientID); - string group = clientID.ToString(); - IJobDetail jobDetail = JobBuilder. - NewJob(). - OfType(jobType). - WithIdentity(name, group). - WithDescription("One time job"). - UsingJobData(dataMap).Build(); - ITrigger trigger = TriggerBuilder. - Create(). - ForJob(jobDetail). - WithIdentity(name, group). - WithSchedule(SimpleScheduleBuilder.Create().WithRepeatCount(0).WithInterval(TimeSpan.Zero)). - StartNow().Build(); - GetScheduler().ScheduleJob(jobDetail, trigger); - } + public void ScheduleOneTimeJob(Type jobType, JobDataMap dataMap, int clientID) + { + string name = string.Format("{0}-{1}", jobType.Name, clientID); + string group = clientID.ToString(); + IJobDetail jobDetail = JobBuilder. + Create(). + OfType(jobType). + WithIdentity(name, group). + WithDescription("One time job"). + UsingJobData(dataMap).Build(); + ITrigger trigger = TriggerBuilder. + Create(). + ForJob(jobDetail). + WithIdentity(name, group). + WithSchedule(SimpleScheduleBuilder.Create().WithRepeatCount(0).WithInterval(TimeSpan.Zero)). + StartNow().Build(); + GetScheduler().ScheduleJob(jobDetail, trigger); + } - private ISchedulerFactory _schedulerFactory; + private ISchedulerFactory _schedulerFactory; - private IScheduler _scheduler; + private IScheduler _scheduler; - public DataTable GetRunningJobs() - { - DataTable table = new DataTable(); - table.Columns.Add("JobName", typeof(string)); - table.Columns.Add("RunTime", typeof(int)); - try - { - var contexts = GetScheduler().GetCurrentlyExecutingJobs(); - foreach (var context in contexts) - { - DataRow row = table.NewRow(); - row["JobName"] = context.JobDetail.Key.Name; - row["RunTime"] = (DateTime.Now.ToUniversalTime() - ((DateTimeOffset)context.FireTimeUtc).DateTime).TotalMinutes; - table.Rows.Add(row); - } - } - catch (Exception ex) - { - //TODO: Let the user know we couldn't load the running jobs. - } + public DataTable GetRunningJobs() + { + DataTable table = new DataTable(); + table.Columns.Add("JobName", typeof(string)); + table.Columns.Add("RunTime", typeof(int)); + try + { + var contexts = GetScheduler().GetCurrentlyExecutingJobs(); + foreach (var context in contexts) + { + DataRow row = table.NewRow(); + row["JobName"] = context.JobDetail.Key.Name; + row["RunTime"] = (DateTime.Now.ToUniversalTime() - ((DateTimeOffset)context.FireTimeUtc).DateTime).TotalMinutes; + table.Rows.Add(row); + } + } + catch (Exception ex) + { + //TODO: Let the user know we couldn't load the running jobs. + } - return table; - } + return table; + } - public void BackupToFile(System.IO.FileInfo file) - { - IScheduler scheduler = GetScheduler(); - var jobGroupNames = scheduler.GetJobGroupNames(); - List jobDetails = new List(); - foreach (var jobGroup in jobGroupNames) - { - var groupMatcher = GroupMatcher.GroupContains(jobGroup); + public void BackupToFile(System.IO.FileInfo file) + { + IScheduler scheduler = GetScheduler(); + var jobGroupNames = scheduler.GetJobGroupNames(); + List jobDetails = new List(); + foreach (var jobGroup in jobGroupNames) + { + var groupMatcher = GroupMatcher.GroupContains(jobGroup); - var jobKeys = scheduler.GetJobKeys(groupMatcher); - foreach (var jobKey in jobKeys) - { - jobDetails.Add(scheduler.GetJobDetail(jobKey)); - } - } - writeToFile(file, jobDetails); + var jobKeys = scheduler.GetJobKeys(groupMatcher); + foreach (var jobKey in jobKeys) + { + jobDetails.Add(scheduler.GetJobDetail(jobKey)); + } + } + writeToFile(file, jobDetails); - } + } - private void writeToFile(System.IO.FileInfo file, List jobDetails) - { - using (StreamWriter writer = file.CreateText()) - { - XNamespace ns = "http://quartznet.sourceforge.net/JobSchedulingData"; - XDocument doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes") - , new XElement(ns + "quartz" - , new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance") - , new XAttribute("version", "1.0") - , new XAttribute("overwrite-existing-jobs", "true") - ) - ); - foreach (IJobDetail detail in jobDetails) - { - doc.Root.Add( - new XElement(ns + "job" - , new XElement(ns + "job-detail" - , new XElement(ns + "name", detail.Key.Name) - , new XElement(ns + "group", detail.Key.Group) - , new XElement(ns + "description", detail.Description) - , new XElement(ns + "job-type", detail.JobType.FullName + "," + detail.JobType.Assembly.FullName) - //TODO: Apparently volatile is no longer available. Check. - //, new XElement(ns + "volatile", detail.Volatile) - , new XElement(ns + "durable", detail.Durable) - , new XElement(ns + "recover", detail.RequestsRecovery) - , getJobDataMap(ns, detail.JobDataMap) - ) - , getTriggers(ns, detail) - ) - ); - } - writer.Write(doc); - writer.Flush(); - writer.Close(); - } - } + private void writeToFile(System.IO.FileInfo file, List jobDetails) + { + using (StreamWriter writer = file.CreateText()) + { + XNamespace ns = "http://quartznet.sourceforge.net/JobSchedulingData"; + XDocument doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes") + , new XElement(ns + "quartz" + , new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance") + , new XAttribute("version", "1.0") + , new XAttribute("overwrite-existing-jobs", "true") + ) + ); + foreach (IJobDetail detail in jobDetails) + { + doc.Root.Add( + new XElement(ns + "job" + , new XElement(ns + "job-detail" + , new XElement(ns + "name", detail.Key.Name) + , new XElement(ns + "group", detail.Key.Group) + , new XElement(ns + "description", detail.Description) + , new XElement(ns + "job-type", detail.JobType.FullName + "," + detail.JobType.Assembly.FullName) + //TODO: Apparently volatile is no longer available. Check. + //, new XElement(ns + "volatile", detail.Volatile) + , new XElement(ns + "durable", detail.Durable) + , new XElement(ns + "recover", detail.RequestsRecovery) + , getJobDataMap(ns, detail.JobDataMap) + ) + , getTriggers(ns, detail) + ) + ); + } + writer.Write(doc); + writer.Flush(); + writer.Close(); + } + } - private XElement getJobDataMap(XNamespace ns, JobDataMap jobDataMap) - { - XElement map = new XElement(ns + "job-data-map"); - foreach (var key in jobDataMap.GetKeys()) - { - map.Add(new XElement(ns + "entry" - , new XElement(ns + "key", key) - , new XElement(ns + "value", jobDataMap[key]) - ) - ); - } + private XElement getJobDataMap(XNamespace ns, JobDataMap jobDataMap) + { + XElement map = new XElement(ns + "job-data-map"); + foreach (var key in jobDataMap.GetKeys()) + { + map.Add(new XElement(ns + "entry" + , new XElement(ns + "key", key) + , new XElement(ns + "value", jobDataMap[key]) + ) + ); + } - return map; - } + return map; + } - private XElement[] getTriggers(XNamespace ns, IJobDetail detail) - { - var triggers = _scheduler.GetTriggersOfJob(detail.Key); - XElement[] elements = new XElement[triggers.Count]; - int i = 0; - foreach (var trigger in triggers) - { - elements[i] = new XElement(ns + "trigger"); - if (triggers[i] is SimpleTriggerImpl) - { - elements[i].Add(getSimpleTrigger(ns, (SimpleTriggerImpl)triggers[i])); - } - else if (triggers[i] is CronTriggerImpl) - { - elements[i].Add(getCronTrigger(ns, (CronTriggerImpl)triggers[i])); - } - i++; - } - return elements; - } + private XElement[] getTriggers(XNamespace ns, IJobDetail detail) + { + var triggers = _scheduler.GetTriggersOfJob(detail.Key); + XElement[] elements = new XElement[triggers.Count]; + int i = 0; + foreach (var trigger in triggers) + { + elements[i] = new XElement(ns + "trigger"); + if (triggers[i] is SimpleTriggerImpl) + { + elements[i].Add(getSimpleTrigger(ns, (SimpleTriggerImpl)triggers[i])); + } + else if (triggers[i] is CronTriggerImpl) + { + elements[i].Add(getCronTrigger(ns, (CronTriggerImpl)triggers[i])); + } + i++; + } + return elements; + } - private XElement getCronTrigger(XNamespace ns, CronTriggerImpl trigger) - { - XElement cronTrigger = new XElement(ns + "cron"); - addCommonTriggerData(ns, cronTrigger, trigger); - cronTrigger.Add( - new XElement(ns + "cron-expression", trigger.CronExpressionString) - ); - return cronTrigger; - } + private XElement getCronTrigger(XNamespace ns, CronTriggerImpl trigger) + { + XElement cronTrigger = new XElement(ns + "cron"); + addCommonTriggerData(ns, cronTrigger, trigger); + cronTrigger.Add( + new XElement(ns + "cron-expression", trigger.CronExpressionString) + ); + return cronTrigger; + } - private void addCommonTriggerData(XNamespace ns, XElement rootTriggerElement, AbstractTrigger trigger) - { - rootTriggerElement.Add( - new XElement(ns + "name", trigger.Key.Name) - , new XElement(ns + "group", trigger.Key.Group) - , new XElement(ns + "description", trigger.Description) - , new XElement(ns + "misfire-instruction", getMisfireInstructionText(trigger)) - //, new XElement(ns + "volatile", trigger.Volatile) - , new XElement(ns + "job-name", trigger.JobName) - , new XElement(ns + "job-group", trigger.JobGroup) - ); - } + private void addCommonTriggerData(XNamespace ns, XElement rootTriggerElement, AbstractTrigger trigger) + { + rootTriggerElement.Add( + new XElement(ns + "name", trigger.Key.Name) + , new XElement(ns + "group", trigger.Key.Group) + , new XElement(ns + "description", trigger.Description) + , new XElement(ns + "misfire-instruction", getMisfireInstructionText(trigger)) + //, new XElement(ns + "volatile", trigger.Volatile) + , new XElement(ns + "job-name", trigger.JobName) + , new XElement(ns + "job-group", trigger.JobGroup) + ); + } - private string getMisfireInstructionText(AbstractTrigger trigger) - { - if (trigger is CronTriggerImpl) - { - return getCronTriggerMisfireInstructionText(trigger.MisfireInstruction); - } - return getSimpleTriggerMisfireInstructionText(trigger.MisfireInstruction); - } + private string getMisfireInstructionText(AbstractTrigger trigger) + { + if (trigger is CronTriggerImpl) + { + return getCronTriggerMisfireInstructionText(trigger.MisfireInstruction); + } + return getSimpleTriggerMisfireInstructionText(trigger.MisfireInstruction); + } - private string getSimpleTriggerMisfireInstructionText(int misfireInstruction) - { - switch (misfireInstruction) - { - case 0: - return "SmartPolicy"; - case 1: - return "FireNow"; - case 2: - return "RescheduleNowWithExistingRepeatCount"; - case 3: - return "RescheduleNowWithRemainingRepeatCount"; - case 4: - return "RescheduleNextWithRemainingCount"; - case 5: - return "RescheduleNextWithExistingCount"; - default: - throw new ArgumentOutOfRangeException(string.Format("{0} is not a supported misfire instruction for SimpleTrigger See Quartz.MisfireInstruction for more details.", misfireInstruction)); - } - } + private string getSimpleTriggerMisfireInstructionText(int misfireInstruction) + { + switch (misfireInstruction) + { + case 0: + return "SmartPolicy"; + case 1: + return "FireNow"; + case 2: + return "RescheduleNowWithExistingRepeatCount"; + case 3: + return "RescheduleNowWithRemainingRepeatCount"; + case 4: + return "RescheduleNextWithRemainingCount"; + case 5: + return "RescheduleNextWithExistingCount"; + default: + throw new ArgumentOutOfRangeException(string.Format("{0} is not a supported misfire instruction for SimpleTrigger See Quartz.MisfireInstruction for more details.", misfireInstruction)); + } + } - private string getCronTriggerMisfireInstructionText(int misfireInstruction) - { - switch (misfireInstruction) - { - case 0: - return "SmartPolicy"; - case 1: - return "FireOnceNow"; - case 2: - return "DoNothing"; - default: - throw new ArgumentOutOfRangeException(string.Format("{0} is not a supported misfire instruction for CronTrigger See Quartz.MisfireInstruction for more details.", misfireInstruction)); - } - } + private string getCronTriggerMisfireInstructionText(int misfireInstruction) + { + switch (misfireInstruction) + { + case 0: + return "SmartPolicy"; + case 1: + return "FireOnceNow"; + case 2: + return "DoNothing"; + default: + throw new ArgumentOutOfRangeException(string.Format("{0} is not a supported misfire instruction for CronTrigger See Quartz.MisfireInstruction for more details.", misfireInstruction)); + } + } - private XElement getSimpleTrigger(XNamespace ns, SimpleTriggerImpl trigger) - { - XElement simpleTrigger = new XElement(ns + "simple"); - addCommonTriggerData(ns, simpleTrigger, trigger); - simpleTrigger.Add( - new XElement(ns + "repeat-count", trigger.RepeatCount) - , new XElement(ns + "repeat-interval", trigger.RepeatInterval.Milliseconds) - ); - return simpleTrigger; - } - } + private XElement getSimpleTrigger(XNamespace ns, SimpleTriggerImpl trigger) + { + XElement simpleTrigger = new XElement(ns + "simple"); + addCommonTriggerData(ns, simpleTrigger, trigger); + simpleTrigger.Add( + new XElement(ns + "repeat-count", trigger.RepeatCount) + , new XElement(ns + "repeat-interval", trigger.RepeatInterval.Milliseconds) + ); + return simpleTrigger; + } + } } diff --git a/Clickforensics.Quartz.sln b/Clickforensics.Quartz.sln index 49f6c13..63e315c 100644 --- a/Clickforensics.Quartz.sln +++ b/Clickforensics.Quartz.sln @@ -5,10 +5,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickForensics.Quartz.Manag EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickForensics.Quartz.Manager.Tests", "ClickForensics.Quartz.Manager.Tests\ClickForensics.Quartz.Manager.Tests.csproj", "{B8B682CC-3E41-4810-86BF-B6728FB26D3A}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickForensics.Quartz.Manager.Wpf", "ClickForensics.Quartz.Manager.Wpf\ClickForensics.Quartz.Manager.Wpf.csproj", "{E690105C-C13C-4DA3-A98D-74C701BBBEDD}" -EndProject -Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ClickForensics.Quartz.Manager.Setup", "ClickForensics.Quartz.Manager.Setup\ClickForensics.Quartz.Manager.Setup.vdproj", "{756A6A07-BC4D-4812-997F-B06FED5D6B41}" -EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickForensics.Quartz.Manager.Wpf", "ClickForensics.Quartz.Manager.Wpf\ClickForensics.Quartz.Manager.Wpf.csproj", "{E690105C-C13C-4DA3-A98D-74C701BBBEDD}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ClickForensics.Quartz.Manager.Setup", "ClickForensics.Quartz.Manager.Setup\ClickForensics.Quartz.Manager.Setup.vdproj", "{756A6A07-BC4D-4812-997F-B06FED5D6B41}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -34,28 +34,28 @@ Global {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Debug|x86.ActiveCfg = Debug|Any CPU {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|Any CPU.Build.0 = Release|Any CPU - {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|x86.ActiveCfg = Release|Any CPU - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|Any CPU.ActiveCfg = Debug|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|x86.ActiveCfg = Debug|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|x86.Build.0 = Debug|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|Any CPU.ActiveCfg = Release|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|Mixed Platforms.Build.0 = Release|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|x86.ActiveCfg = Release|x86 - {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|x86.Build.0 = Release|x86 - {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Debug|Any CPU.ActiveCfg = Debug - {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Debug|Mixed Platforms.ActiveCfg = Debug - {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Debug|x86.ActiveCfg = Debug - {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|Any CPU.ActiveCfg = Release - {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|Mixed Platforms.ActiveCfg = Release - {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|x86.ActiveCfg = Release + {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B8B682CC-3E41-4810-86BF-B6728FB26D3A}.Release|x86.ActiveCfg = Release|Any CPU + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|Any CPU.ActiveCfg = Debug|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|x86.ActiveCfg = Debug|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Debug|x86.Build.0 = Debug|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|Any CPU.ActiveCfg = Release|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|Mixed Platforms.Build.0 = Release|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|x86.ActiveCfg = Release|x86 + {E690105C-C13C-4DA3-A98D-74C701BBBEDD}.Release|x86.Build.0 = Release|x86 + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Debug|Any CPU.ActiveCfg = Debug + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Debug|Mixed Platforms.ActiveCfg = Debug + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Debug|x86.ActiveCfg = Debug + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|Any CPU.ActiveCfg = Release + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|Any CPU.Build.0 = Release + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|Mixed Platforms.ActiveCfg = Release + {756A6A07-BC4D-4812-997F-B06FED5D6B41}.Release|x86.ActiveCfg = Release EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection -EndGlobal +EndGlobal