| @@ -1,7 +0,0 @@ | |||
| obj/ | |||
| bin/ | |||
| *.user | |||
| *.suo | |||
| *.exe | |||
| *.msi | |||
| _ReSharper.Clickforensics.Quartz/ | |||
| @@ -1,390 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class AddJobForm | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Windows Form Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.btnAdd = new System.Windows.Forms.Button(); | |||
| this.btnCancel = new System.Windows.Forms.Button(); | |||
| this.cboJobType = new System.Windows.Forms.ComboBox(); | |||
| this.cboTriggerType = new System.Windows.Forms.ComboBox(); | |||
| this.label1 = new System.Windows.Forms.Label(); | |||
| this.txtJobGroup = new System.Windows.Forms.TextBox(); | |||
| this.txtJobName = new System.Windows.Forms.TextBox(); | |||
| this.txtTriggerName = new System.Windows.Forms.TextBox(); | |||
| this.txtTriggerDescription = new System.Windows.Forms.TextBox(); | |||
| this.txtCronExpression = new System.Windows.Forms.TextBox(); | |||
| this.txtTriggerGroup = new System.Windows.Forms.TextBox(); | |||
| this.label2 = new System.Windows.Forms.Label(); | |||
| this.label3 = new System.Windows.Forms.Label(); | |||
| this.label4 = new System.Windows.Forms.Label(); | |||
| this.label5 = new System.Windows.Forms.Label(); | |||
| this.label6 = new System.Windows.Forms.Label(); | |||
| this.label7 = new System.Windows.Forms.Label(); | |||
| this.label8 = new System.Windows.Forms.Label(); | |||
| this.lblJobDescription = new System.Windows.Forms.Label(); | |||
| this.txtJobDescription = new System.Windows.Forms.TextBox(); | |||
| this.jobDataListView = new System.Windows.Forms.ListView(); | |||
| this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
| this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
| this.label10 = new System.Windows.Forms.Label(); | |||
| this.label11 = new System.Windows.Forms.Label(); | |||
| this.txtKey = new System.Windows.Forms.TextBox(); | |||
| this.label12 = new System.Windows.Forms.Label(); | |||
| this.txtValue = new System.Windows.Forms.TextBox(); | |||
| this.btnAddKeyValue = new System.Windows.Forms.Button(); | |||
| this.btnDelete = new System.Windows.Forms.Button(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // btnAdd | |||
| // | |||
| this.btnAdd.Location = new System.Drawing.Point(32, 273); | |||
| this.btnAdd.Name = "btnAdd"; | |||
| this.btnAdd.Size = new System.Drawing.Size(75, 23); | |||
| this.btnAdd.TabIndex = 0; | |||
| this.btnAdd.Text = "Add"; | |||
| this.btnAdd.UseVisualStyleBackColor = true; | |||
| this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); | |||
| // | |||
| // btnCancel | |||
| // | |||
| this.btnCancel.Location = new System.Drawing.Point(140, 273); | |||
| this.btnCancel.Name = "btnCancel"; | |||
| this.btnCancel.Size = new System.Drawing.Size(75, 23); | |||
| this.btnCancel.TabIndex = 1; | |||
| this.btnCancel.Text = "Cancel"; | |||
| this.btnCancel.UseVisualStyleBackColor = true; | |||
| this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); | |||
| // | |||
| // cboJobType | |||
| // | |||
| this.cboJobType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; | |||
| this.cboJobType.FormattingEnabled = true; | |||
| this.cboJobType.Location = new System.Drawing.Point(131, 13); | |||
| this.cboJobType.Name = "cboJobType"; | |||
| this.cboJobType.Size = new System.Drawing.Size(277, 21); | |||
| this.cboJobType.TabIndex = 2; | |||
| // | |||
| // cboTriggerType | |||
| // | |||
| this.cboTriggerType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; | |||
| this.cboTriggerType.FormattingEnabled = true; | |||
| this.cboTriggerType.Location = new System.Drawing.Point(131, 122); | |||
| this.cboTriggerType.Name = "cboTriggerType"; | |||
| this.cboTriggerType.Size = new System.Drawing.Size(277, 21); | |||
| this.cboTriggerType.TabIndex = 3; | |||
| // | |||
| // label1 | |||
| // | |||
| this.label1.AutoSize = true; | |||
| this.label1.Location = new System.Drawing.Point(29, 17); | |||
| this.label1.Name = "label1"; | |||
| this.label1.Size = new System.Drawing.Size(54, 13); | |||
| this.label1.TabIndex = 4; | |||
| this.label1.Text = "Job Type:"; | |||
| // | |||
| // txtJobGroup | |||
| // | |||
| this.txtJobGroup.Location = new System.Drawing.Point(131, 41); | |||
| this.txtJobGroup.Name = "txtJobGroup"; | |||
| this.txtJobGroup.Size = new System.Drawing.Size(277, 20); | |||
| this.txtJobGroup.TabIndex = 5; | |||
| // | |||
| // txtJobName | |||
| // | |||
| this.txtJobName.Location = new System.Drawing.Point(131, 68); | |||
| this.txtJobName.Name = "txtJobName"; | |||
| this.txtJobName.Size = new System.Drawing.Size(277, 20); | |||
| this.txtJobName.TabIndex = 6; | |||
| // | |||
| // txtTriggerName | |||
| // | |||
| this.txtTriggerName.Location = new System.Drawing.Point(131, 177); | |||
| this.txtTriggerName.Name = "txtTriggerName"; | |||
| this.txtTriggerName.Size = new System.Drawing.Size(277, 20); | |||
| this.txtTriggerName.TabIndex = 8; | |||
| // | |||
| // txtTriggerDescription | |||
| // | |||
| this.txtTriggerDescription.Location = new System.Drawing.Point(131, 204); | |||
| this.txtTriggerDescription.Name = "txtTriggerDescription"; | |||
| this.txtTriggerDescription.Size = new System.Drawing.Size(277, 20); | |||
| this.txtTriggerDescription.TabIndex = 7; | |||
| // | |||
| // txtCronExpression | |||
| // | |||
| this.txtCronExpression.Location = new System.Drawing.Point(131, 231); | |||
| this.txtCronExpression.Name = "txtCronExpression"; | |||
| this.txtCronExpression.Size = new System.Drawing.Size(277, 20); | |||
| this.txtCronExpression.TabIndex = 10; | |||
| // | |||
| // txtTriggerGroup | |||
| // | |||
| this.txtTriggerGroup.Location = new System.Drawing.Point(131, 150); | |||
| this.txtTriggerGroup.Name = "txtTriggerGroup"; | |||
| this.txtTriggerGroup.Size = new System.Drawing.Size(277, 20); | |||
| this.txtTriggerGroup.TabIndex = 9; | |||
| // | |||
| // label2 | |||
| // | |||
| this.label2.AutoSize = true; | |||
| this.label2.Location = new System.Drawing.Point(29, 44); | |||
| this.label2.Name = "label2"; | |||
| this.label2.Size = new System.Drawing.Size(59, 13); | |||
| this.label2.TabIndex = 11; | |||
| this.label2.Text = "Job Group:"; | |||
| // | |||
| // label3 | |||
| // | |||
| this.label3.AutoSize = true; | |||
| this.label3.Location = new System.Drawing.Point(29, 71); | |||
| this.label3.Name = "label3"; | |||
| this.label3.Size = new System.Drawing.Size(58, 13); | |||
| this.label3.TabIndex = 12; | |||
| this.label3.Text = "Job Name:"; | |||
| // | |||
| // label4 | |||
| // | |||
| this.label4.AutoSize = true; | |||
| this.label4.Location = new System.Drawing.Point(29, 125); | |||
| this.label4.Name = "label4"; | |||
| this.label4.Size = new System.Drawing.Size(70, 13); | |||
| this.label4.TabIndex = 13; | |||
| this.label4.Text = "Trigger Type:"; | |||
| // | |||
| // label5 | |||
| // | |||
| this.label5.AutoSize = true; | |||
| this.label5.Location = new System.Drawing.Point(29, 207); | |||
| this.label5.Name = "label5"; | |||
| this.label5.Size = new System.Drawing.Size(99, 13); | |||
| this.label5.TabIndex = 14; | |||
| this.label5.Text = "Trigger Description:"; | |||
| // | |||
| // label6 | |||
| // | |||
| this.label6.AutoSize = true; | |||
| this.label6.Location = new System.Drawing.Point(29, 180); | |||
| this.label6.Name = "label6"; | |||
| this.label6.Size = new System.Drawing.Size(74, 13); | |||
| this.label6.TabIndex = 15; | |||
| this.label6.Text = "Trigger Name:"; | |||
| // | |||
| // label7 | |||
| // | |||
| this.label7.AutoSize = true; | |||
| this.label7.Location = new System.Drawing.Point(29, 153); | |||
| this.label7.Name = "label7"; | |||
| this.label7.Size = new System.Drawing.Size(75, 13); | |||
| this.label7.TabIndex = 16; | |||
| this.label7.Text = "Trigger Group:"; | |||
| // | |||
| // label8 | |||
| // | |||
| this.label8.AutoSize = true; | |||
| this.label8.Location = new System.Drawing.Point(29, 234); | |||
| this.label8.Name = "label8"; | |||
| this.label8.Size = new System.Drawing.Size(86, 13); | |||
| this.label8.TabIndex = 17; | |||
| this.label8.Text = "Cron Expression:"; | |||
| // | |||
| // lblJobDescription | |||
| // | |||
| this.lblJobDescription.AutoSize = true; | |||
| this.lblJobDescription.Location = new System.Drawing.Point(29, 98); | |||
| this.lblJobDescription.Name = "lblJobDescription"; | |||
| this.lblJobDescription.Size = new System.Drawing.Size(83, 13); | |||
| this.lblJobDescription.TabIndex = 19; | |||
| this.lblJobDescription.Text = "Job Description:"; | |||
| // | |||
| // txtJobDescription | |||
| // | |||
| this.txtJobDescription.Location = new System.Drawing.Point(131, 95); | |||
| this.txtJobDescription.Name = "txtJobDescription"; | |||
| this.txtJobDescription.Size = new System.Drawing.Size(277, 20); | |||
| this.txtJobDescription.TabIndex = 18; | |||
| // | |||
| // jobDataListView | |||
| // | |||
| this.jobDataListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { | |||
| this.columnHeader1, | |||
| this.columnHeader2}); | |||
| this.jobDataListView.FullRowSelect = true; | |||
| this.jobDataListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; | |||
| this.jobDataListView.Location = new System.Drawing.Point(559, 43); | |||
| this.jobDataListView.MultiSelect = false; | |||
| this.jobDataListView.Name = "jobDataListView"; | |||
| this.jobDataListView.Size = new System.Drawing.Size(233, 99); | |||
| this.jobDataListView.TabIndex = 20; | |||
| this.jobDataListView.UseCompatibleStateImageBehavior = false; | |||
| this.jobDataListView.View = System.Windows.Forms.View.Details; | |||
| // | |||
| // columnHeader1 | |||
| // | |||
| this.columnHeader1.Text = "Key"; | |||
| this.columnHeader1.Width = 82; | |||
| // | |||
| // columnHeader2 | |||
| // | |||
| this.columnHeader2.Text = "Value"; | |||
| this.columnHeader2.Width = 145; | |||
| // | |||
| // label10 | |||
| // | |||
| this.label10.AutoSize = true; | |||
| this.label10.Location = new System.Drawing.Point(556, 17); | |||
| this.label10.Name = "label10"; | |||
| this.label10.Size = new System.Drawing.Size(53, 13); | |||
| this.label10.TabIndex = 21; | |||
| this.label10.Text = "Job Data:"; | |||
| // | |||
| // label11 | |||
| // | |||
| this.label11.AutoSize = true; | |||
| this.label11.Location = new System.Drawing.Point(560, 162); | |||
| this.label11.Name = "label11"; | |||
| this.label11.Size = new System.Drawing.Size(28, 13); | |||
| this.label11.TabIndex = 23; | |||
| this.label11.Text = "Key:"; | |||
| // | |||
| // txtKey | |||
| // | |||
| this.txtKey.Location = new System.Drawing.Point(604, 159); | |||
| this.txtKey.Name = "txtKey"; | |||
| this.txtKey.Size = new System.Drawing.Size(188, 20); | |||
| this.txtKey.TabIndex = 22; | |||
| // | |||
| // label12 | |||
| // | |||
| this.label12.AutoSize = true; | |||
| this.label12.Location = new System.Drawing.Point(560, 188); | |||
| this.label12.Name = "label12"; | |||
| this.label12.Size = new System.Drawing.Size(37, 13); | |||
| this.label12.TabIndex = 25; | |||
| this.label12.Text = "Value:"; | |||
| // | |||
| // txtValue | |||
| // | |||
| this.txtValue.Location = new System.Drawing.Point(604, 185); | |||
| this.txtValue.Name = "txtValue"; | |||
| this.txtValue.Size = new System.Drawing.Size(188, 20); | |||
| this.txtValue.TabIndex = 24; | |||
| // | |||
| // btnAddKeyValue | |||
| // | |||
| this.btnAddKeyValue.Location = new System.Drawing.Point(559, 211); | |||
| this.btnAddKeyValue.Name = "btnAddKeyValue"; | |||
| this.btnAddKeyValue.Size = new System.Drawing.Size(50, 23); | |||
| this.btnAddKeyValue.TabIndex = 26; | |||
| this.btnAddKeyValue.Text = "Add"; | |||
| this.btnAddKeyValue.UseVisualStyleBackColor = true; | |||
| this.btnAddKeyValue.Click += new System.EventHandler(this.btnAddKeyValue_Click); | |||
| // | |||
| // btnDelete | |||
| // | |||
| this.btnDelete.Location = new System.Drawing.Point(798, 41); | |||
| this.btnDelete.Name = "btnDelete"; | |||
| this.btnDelete.Size = new System.Drawing.Size(52, 23); | |||
| this.btnDelete.TabIndex = 27; | |||
| this.btnDelete.Text = "Delete"; | |||
| this.btnDelete.UseVisualStyleBackColor = true; | |||
| this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); | |||
| // | |||
| // AddJobForm | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.ClientSize = new System.Drawing.Size(1044, 338); | |||
| this.Controls.Add(this.btnDelete); | |||
| this.Controls.Add(this.btnAddKeyValue); | |||
| this.Controls.Add(this.label12); | |||
| this.Controls.Add(this.txtValue); | |||
| this.Controls.Add(this.label11); | |||
| this.Controls.Add(this.txtKey); | |||
| this.Controls.Add(this.label10); | |||
| this.Controls.Add(this.jobDataListView); | |||
| this.Controls.Add(this.lblJobDescription); | |||
| this.Controls.Add(this.txtJobDescription); | |||
| this.Controls.Add(this.label8); | |||
| this.Controls.Add(this.label7); | |||
| this.Controls.Add(this.label6); | |||
| this.Controls.Add(this.label5); | |||
| this.Controls.Add(this.label4); | |||
| this.Controls.Add(this.label3); | |||
| this.Controls.Add(this.label2); | |||
| this.Controls.Add(this.txtCronExpression); | |||
| this.Controls.Add(this.txtTriggerGroup); | |||
| this.Controls.Add(this.txtTriggerName); | |||
| this.Controls.Add(this.txtTriggerDescription); | |||
| this.Controls.Add(this.txtJobName); | |||
| this.Controls.Add(this.txtJobGroup); | |||
| this.Controls.Add(this.label1); | |||
| this.Controls.Add(this.cboTriggerType); | |||
| this.Controls.Add(this.cboJobType); | |||
| this.Controls.Add(this.btnCancel); | |||
| this.Controls.Add(this.btnAdd); | |||
| this.Name = "AddJobForm"; | |||
| this.Text = "AddJobForm"; | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.Button btnAdd; | |||
| private System.Windows.Forms.Button btnCancel; | |||
| private System.Windows.Forms.ComboBox cboJobType; | |||
| private System.Windows.Forms.ComboBox cboTriggerType; | |||
| private System.Windows.Forms.Label label1; | |||
| private System.Windows.Forms.TextBox txtJobGroup; | |||
| private System.Windows.Forms.TextBox txtJobName; | |||
| private System.Windows.Forms.TextBox txtTriggerName; | |||
| private System.Windows.Forms.TextBox txtTriggerDescription; | |||
| private System.Windows.Forms.TextBox txtCronExpression; | |||
| private System.Windows.Forms.TextBox txtTriggerGroup; | |||
| private System.Windows.Forms.Label label2; | |||
| private System.Windows.Forms.Label label3; | |||
| private System.Windows.Forms.Label label4; | |||
| private System.Windows.Forms.Label label5; | |||
| private System.Windows.Forms.Label label6; | |||
| private System.Windows.Forms.Label label7; | |||
| private System.Windows.Forms.Label label8; | |||
| private System.Windows.Forms.Label lblJobDescription; | |||
| private System.Windows.Forms.TextBox txtJobDescription; | |||
| private System.Windows.Forms.ListView jobDataListView; | |||
| private System.Windows.Forms.Label label10; | |||
| private System.Windows.Forms.Label label11; | |||
| private System.Windows.Forms.TextBox txtKey; | |||
| private System.Windows.Forms.Label label12; | |||
| private System.Windows.Forms.TextBox txtValue; | |||
| private System.Windows.Forms.Button btnAddKeyValue; | |||
| private System.Windows.Forms.Button btnDelete; | |||
| private System.Windows.Forms.ColumnHeader columnHeader1; | |||
| private System.Windows.Forms.ColumnHeader columnHeader2; | |||
| } | |||
| } | |||
| @@ -1,178 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Data; | |||
| using System.Drawing; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Quartz; | |||
| using System.Reflection; | |||
| using Quartz.Impl; | |||
| using Quartz.Impl.Triggers; | |||
| using Quartz.Job; | |||
| using System.IO; | |||
| using Quartz.Util; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class AddJobForm : Form | |||
| { | |||
| public AddJobForm() | |||
| { | |||
| InitializeComponent(); | |||
| loadJobAssemblies(); | |||
| cboTriggerType.Items.Add("Cron"); | |||
| cboTriggerType.SelectedItem = "Cron"; | |||
| if (cboJobType.SelectedText == "NativeJob") | |||
| { | |||
| jobDataListView.Items.Add(new ListViewItem(new string[] { "consumeStreams", "true" })); | |||
| jobDataListView.Items.Add(new ListViewItem(new string[] { "waitForProcess", "true" })); | |||
| txtKey.Text = "command"; | |||
| } | |||
| } | |||
| private void loadJobAssemblies() | |||
| { | |||
| var assemblies = AssemblyRepository.GetAssemblies(); | |||
| SortedList<string, string> jobTypes = new SortedList<string, string>(); | |||
| foreach (var assemblyName in assemblies) | |||
| { | |||
| Assembly assembly = Assembly.LoadFile(Environment.CurrentDirectory + "\\" + assemblyName); | |||
| foreach (Type type in assembly.GetTypes()) | |||
| { | |||
| if (typeof(IJob).IsAssignableFrom(type) && type.IsClass) | |||
| { | |||
| jobTypes.Add(type.FullName, assembly.GetName().Name); | |||
| } | |||
| } | |||
| } | |||
| foreach (var item in jobTypes) | |||
| { | |||
| cboJobType.Items.Add(new JobType() { AssemblyName = item.Value, FullName = item.Key }); | |||
| } | |||
| //cboJobType.Items.AddRange(jobTypes.Values.ToArray<string>()); | |||
| } | |||
| public AddJobForm(TriggerNode node) | |||
| : this() | |||
| { | |||
| setTriggerData((CronTriggerImpl)node.Trigger); | |||
| setJobData(((JobNode)node.Parent.Parent).Detail); | |||
| } | |||
| private void setTriggerData(CronTriggerImpl trigger) | |||
| { | |||
| setTriggerType(); | |||
| txtCronExpression.Text = trigger.CronExpressionString; | |||
| txtTriggerDescription.Text = trigger.Description; | |||
| txtTriggerGroup.Text = trigger.Key.Group; | |||
| txtTriggerName.Text = trigger.Key.Name; | |||
| } | |||
| private void setJobData(IJobDetail detail) | |||
| { | |||
| setJobType(detail); | |||
| txtJobDescription.Text = detail.Description; | |||
| txtJobGroup.Text = detail.Key.Group; | |||
| txtJobName.Text = detail.Key.Name; | |||
| setJobDataMap(detail); | |||
| } | |||
| private void setJobDataMap(IJobDetail detail) | |||
| { | |||
| jobDataListView.Items.Clear(); | |||
| foreach (var item in detail.JobDataMap.GetKeys()) | |||
| { | |||
| jobDataListView.Items.Add(new ListViewItem(new string[] { item, detail.JobDataMap.Get(item).ToString() })); | |||
| } | |||
| } | |||
| private void setJobType(IJobDetail detail) | |||
| { | |||
| cboJobType.SelectedItem = detail.JobType.FullName; | |||
| } | |||
| private void setTriggerType() | |||
| { | |||
| //nothing to do right now | |||
| } | |||
| public IJobDetail JobDetail { get; set; } | |||
| public ITrigger Trigger { get; set; } | |||
| private void btnCancel_Click(object sender, EventArgs e) | |||
| { | |||
| this.Close(); | |||
| } | |||
| private void btnAdd_Click(object sender, EventArgs e) | |||
| { | |||
| JobDetail = getJobDetail(); | |||
| Trigger = getTrigger(JobDetail); | |||
| this.Close(); | |||
| } | |||
| private IJobDetail getJobDetail() | |||
| { | |||
| IJobDetail detail = JobBuilder | |||
| .Create() | |||
| .OfType(getJobType()) | |||
| .WithDescription(txtJobDescription.Text) | |||
| .WithIdentity(new JobKey(txtJobName.Text, txtJobGroup.Text)) | |||
| .UsingJobData(getJobDataMap()) | |||
| .Build(); | |||
| return detail; | |||
| } | |||
| private ITrigger getTrigger(IJobDetail jobDetail) | |||
| { | |||
| var builder = | |||
| TriggerBuilder | |||
| .Create() | |||
| .ForJob(jobDetail) | |||
| .WithDescription(txtTriggerDescription.Text) | |||
| .WithIdentity(new TriggerKey(txtTriggerName.Text, txtTriggerGroup.Text)); | |||
| if (cboTriggerType.SelectedText == "Simple") | |||
| { | |||
| return builder.WithSchedule(SimpleScheduleBuilder.Create()).Build(); | |||
| } | |||
| else | |||
| { | |||
| return builder.WithSchedule(CronScheduleBuilder.CronSchedule(txtCronExpression.Text)).Build(); | |||
| } | |||
| } | |||
| private Type getJobType() | |||
| { | |||
| JobType type = (JobType)cboJobType.SelectedItem; | |||
| return Type.GetType(type.FullName + "," + type.AssemblyName, true); | |||
| } | |||
| private JobDataMap getJobDataMap() | |||
| { | |||
| JobDataMap map = new JobDataMap(); | |||
| foreach (ListViewItem item in jobDataListView.Items) | |||
| { | |||
| map.Add(item.SubItems[0].Text, item.SubItems[1].Text); | |||
| } | |||
| return map; | |||
| } | |||
| private void btnAddKeyValue_Click(object sender, EventArgs e) | |||
| { | |||
| ListViewItem item = new ListViewItem(new string[] { txtKey.Text, txtValue.Text }); | |||
| jobDataListView.Items.Add(item); | |||
| } | |||
| private void btnDelete_Click(object sender, EventArgs e) | |||
| { | |||
| foreach (ListViewItem item in jobDataListView.SelectedItems) | |||
| { | |||
| jobDataListView.Items.Remove(item); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,118 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class AddListenerForm | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Windows Form Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.txtListenerName = new System.Windows.Forms.TextBox(); | |||
| this.label1 = new System.Windows.Forms.Label(); | |||
| this.label2 = new System.Windows.Forms.Label(); | |||
| this.btnAdd = new System.Windows.Forms.Button(); | |||
| this.btnCancel = new System.Windows.Forms.Button(); | |||
| this.txtListenerType = new System.Windows.Forms.TextBox(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // txtListenerName | |||
| // | |||
| this.txtListenerName.Location = new System.Drawing.Point(98, 12); | |||
| this.txtListenerName.Name = "txtListenerName"; | |||
| this.txtListenerName.Size = new System.Drawing.Size(100, 20); | |||
| this.txtListenerName.TabIndex = 7; | |||
| // | |||
| // label1 | |||
| // | |||
| this.label1.AutoSize = true; | |||
| this.label1.Location = new System.Drawing.Point(21, 15); | |||
| this.label1.Name = "label1"; | |||
| this.label1.Size = new System.Drawing.Size(38, 13); | |||
| this.label1.TabIndex = 6; | |||
| this.label1.Text = "Name:"; | |||
| // | |||
| // label2 | |||
| // | |||
| this.label2.AutoSize = true; | |||
| this.label2.Location = new System.Drawing.Point(21, 41); | |||
| this.label2.Name = "label2"; | |||
| this.label2.Size = new System.Drawing.Size(74, 13); | |||
| this.label2.TabIndex = 9; | |||
| this.label2.Text = "Listener Type:"; | |||
| // | |||
| // btnAdd | |||
| // | |||
| this.btnAdd.Location = new System.Drawing.Point(24, 75); | |||
| this.btnAdd.Name = "btnAdd"; | |||
| this.btnAdd.Size = new System.Drawing.Size(75, 23); | |||
| this.btnAdd.TabIndex = 10; | |||
| this.btnAdd.Text = "Add"; | |||
| this.btnAdd.UseVisualStyleBackColor = true; | |||
| this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); | |||
| // | |||
| // btnCancel | |||
| // | |||
| this.btnCancel.Location = new System.Drawing.Point(123, 75); | |||
| this.btnCancel.Name = "btnCancel"; | |||
| this.btnCancel.Size = new System.Drawing.Size(75, 23); | |||
| this.btnCancel.TabIndex = 11; | |||
| this.btnCancel.Text = "Cancel"; | |||
| this.btnCancel.UseVisualStyleBackColor = true; | |||
| this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); | |||
| // | |||
| // txtListenerType | |||
| // | |||
| this.txtListenerType.Location = new System.Drawing.Point(98, 38); | |||
| this.txtListenerType.Name = "txtListenerType"; | |||
| this.txtListenerType.Size = new System.Drawing.Size(100, 20); | |||
| this.txtListenerType.TabIndex = 12; | |||
| // | |||
| // AddListenerForm | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.ClientSize = new System.Drawing.Size(360, 110); | |||
| this.Controls.Add(this.txtListenerType); | |||
| this.Controls.Add(this.btnCancel); | |||
| this.Controls.Add(this.btnAdd); | |||
| this.Controls.Add(this.label2); | |||
| this.Controls.Add(this.txtListenerName); | |||
| this.Controls.Add(this.label1); | |||
| this.Name = "AddListenerForm"; | |||
| this.Text = "AddListenerForm"; | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.TextBox txtListenerName; | |||
| private System.Windows.Forms.Label label1; | |||
| private System.Windows.Forms.Label label2; | |||
| private System.Windows.Forms.Button btnAdd; | |||
| private System.Windows.Forms.Button btnCancel; | |||
| private System.Windows.Forms.TextBox txtListenerType; | |||
| } | |||
| } | |||
| @@ -1,68 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Data; | |||
| using System.Drawing; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using System.Reflection; | |||
| //using ClickForensics.Quartz.Jobs; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class AddListenerForm : Form | |||
| { | |||
| public AddListenerForm() | |||
| { | |||
| InitializeComponent(); | |||
| this.Load += new EventHandler(AddListenerForm_Load); | |||
| } | |||
| void AddListenerForm_Load(object sender, EventArgs e) | |||
| { | |||
| //loadListenerTypes(); | |||
| } | |||
| private List<Type> getListenerTypes() | |||
| { | |||
| //JobHistoryListener listener = new JobHistoryListener(); | |||
| List<Type> types = new List<Type>(); | |||
| Type theThing = ListenerInterface.BaseType; | |||
| foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) | |||
| { | |||
| foreach (Type type in assembly.GetTypes()) | |||
| { | |||
| if (ListenerInterface.UnderlyingSystemType.IsAssignableFrom(type)) | |||
| { | |||
| types.Add(type); | |||
| } | |||
| } | |||
| } | |||
| return types; | |||
| } | |||
| //private void loadListenerTypes() | |||
| //{ | |||
| // listenerTypeCombo.Items.Clear(); | |||
| // foreach (var type in getListenerTypes()) | |||
| // { | |||
| // listenerTypeCombo.Items.Add(type); | |||
| // } | |||
| //} | |||
| public Type ListenerInterface { get; set; } | |||
| public string ListenerType { get; set; } | |||
| public string ListenerName { get; set; } | |||
| private void btnCancel_Click(object sender, EventArgs e) | |||
| { | |||
| this.Close(); | |||
| } | |||
| private void btnAdd_Click(object sender, EventArgs e) | |||
| { | |||
| ListenerName=txtListenerName.Text; | |||
| ListenerType = txtListenerType.Text; | |||
| this.Close(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,55 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.IO; | |||
| using System.Linq; | |||
| using System.Text; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public class AssemblyRepository | |||
| { | |||
| public static void AddAssembly(string assembly) | |||
| { | |||
| var assemblies = GetAssemblies(); | |||
| assemblies.Add(assembly); | |||
| using (StreamWriter stream = File.CreateText("JobAssemblies.txt")) | |||
| { | |||
| foreach (var assemblyName in assemblies) | |||
| { | |||
| stream.WriteLine(assemblyName); | |||
| } | |||
| } | |||
| } | |||
| public static HashSet<string> GetAssemblies() | |||
| { | |||
| HashSet<string> assemblies = new HashSet<string>(); | |||
| using (FileStream stream = File.OpenRead("JobAssemblies.txt")) | |||
| { | |||
| using (StreamReader reader = new StreamReader(stream)) | |||
| { | |||
| string line; | |||
| while ((line = reader.ReadLine()) != null) | |||
| { | |||
| assemblies.Add(line); | |||
| } | |||
| } | |||
| } | |||
| return assemblies; | |||
| } | |||
| public static void DeleteAssembly(string assembly) | |||
| { | |||
| var assemblies = GetAssemblies(); | |||
| assemblies.Remove(assembly); | |||
| using (StreamWriter stream = File.CreateText("JobAssemblies.txt")) | |||
| { | |||
| foreach (var assemblyName in assemblies) | |||
| { | |||
| stream.WriteLine(assemblyName); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,233 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
| <PropertyGroup> | |||
| <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||
| <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||
| <ProductVersion>9.0.30729</ProductVersion> | |||
| <SchemaVersion>2.0</SchemaVersion> | |||
| <ProjectGuid>{D23DACFA-11A1-480E-A6C4-1F37B564523D}</ProjectGuid> | |||
| <OutputType>WinExe</OutputType> | |||
| <AppDesignerFolder>Properties</AppDesignerFolder> | |||
| <RootNamespace>ClickForensics.Quartz.Manager</RootNamespace> | |||
| <AssemblyName>ClickForensics.Quartz.Manager</AssemblyName> | |||
| <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> | |||
| <FileAlignment>512</FileAlignment> | |||
| <FileUpgradeFlags> | |||
| </FileUpgradeFlags> | |||
| <OldToolsVersion>3.5</OldToolsVersion> | |||
| <UpgradeBackupLocation /> | |||
| <TargetFrameworkProfile /> | |||
| <PublishUrl>publish\</PublishUrl> | |||
| <Install>true</Install> | |||
| <InstallFrom>Disk</InstallFrom> | |||
| <UpdateEnabled>false</UpdateEnabled> | |||
| <UpdateMode>Foreground</UpdateMode> | |||
| <UpdateInterval>7</UpdateInterval> | |||
| <UpdateIntervalUnits>Days</UpdateIntervalUnits> | |||
| <UpdatePeriodically>false</UpdatePeriodically> | |||
| <UpdateRequired>false</UpdateRequired> | |||
| <MapFileExtensions>true</MapFileExtensions> | |||
| <ApplicationRevision>0</ApplicationRevision> | |||
| <ApplicationVersion>1.0.0.%2a</ApplicationVersion> | |||
| <IsWebBootstrapper>false</IsWebBootstrapper> | |||
| <UseApplicationTrust>false</UseApplicationTrust> | |||
| <BootstrapperEnabled>true</BootstrapperEnabled> | |||
| </PropertyGroup> | |||
| <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||
| <DebugSymbols>true</DebugSymbols> | |||
| <DebugType>full</DebugType> | |||
| <Optimize>false</Optimize> | |||
| <OutputPath>bin\Debug\</OutputPath> | |||
| <DefineConstants>DEBUG;TRACE</DefineConstants> | |||
| <ErrorReport>prompt</ErrorReport> | |||
| <WarningLevel>4</WarningLevel> | |||
| </PropertyGroup> | |||
| <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||
| <DebugType>pdbonly</DebugType> | |||
| <Optimize>true</Optimize> | |||
| <OutputPath>bin\Release\</OutputPath> | |||
| <DefineConstants>TRACE</DefineConstants> | |||
| <ErrorReport>prompt</ErrorReport> | |||
| <WarningLevel>4</WarningLevel> | |||
| </PropertyGroup> | |||
| <ItemGroup> | |||
| <Reference Include="Common.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e, processorArchitecture=MSIL"> | |||
| <SpecificVersion>False</SpecificVersion> | |||
| <HintPath>..\packages\Common.Logging.3.1.0\lib\net40\Common.Logging.dll</HintPath> | |||
| </Reference> | |||
| <Reference Include="Common.Logging.Core"> | |||
| <HintPath>..\packages\Common.Logging.Core.3.1.0\lib\net40\Common.Logging.Core.dll</HintPath> | |||
| </Reference> | |||
| <Reference Include="log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> | |||
| <SpecificVersion>False</SpecificVersion> | |||
| <HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath> | |||
| </Reference> | |||
| <Reference Include="Quartz, Version=2.3.2.0, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL"> | |||
| <SpecificVersion>False</SpecificVersion> | |||
| <HintPath>..\packages\Quartz.2.3.2\lib\net40\Quartz.dll</HintPath> | |||
| </Reference> | |||
| <Reference Include="System" /> | |||
| <Reference Include="System.configuration" /> | |||
| <Reference Include="System.Core"> | |||
| <RequiredTargetFramework>3.5</RequiredTargetFramework> | |||
| </Reference> | |||
| <Reference Include="System.Xml.Linq"> | |||
| <RequiredTargetFramework>3.5</RequiredTargetFramework> | |||
| </Reference> | |||
| <Reference Include="System.Data.DataSetExtensions"> | |||
| <RequiredTargetFramework>3.5</RequiredTargetFramework> | |||
| </Reference> | |||
| <Reference Include="System.Data" /> | |||
| <Reference Include="System.Deployment" /> | |||
| <Reference Include="System.Drawing" /> | |||
| <Reference Include="System.Windows.Forms" /> | |||
| <Reference Include="System.Xml" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <Compile Include="AddJobForm.cs"> | |||
| <SubType>Form</SubType> | |||
| </Compile> | |||
| <Compile Include="AddJobForm.Designer.cs"> | |||
| <DependentUpon>AddJobForm.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="AddListenerForm.cs"> | |||
| <SubType>Form</SubType> | |||
| </Compile> | |||
| <Compile Include="AddListenerForm.Designer.cs"> | |||
| <DependentUpon>AddListenerForm.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="AssemblyRepository.cs" /> | |||
| <Compile Include="ConnectionInfo.cs" /> | |||
| <Compile Include="DeleteAssembliesForm.cs"> | |||
| <SubType>Form</SubType> | |||
| </Compile> | |||
| <Compile Include="DeleteAssembliesForm.Designer.cs"> | |||
| <DependentUpon>DeleteAssembliesForm.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="SimpleTriggerDisplay.cs"> | |||
| <SubType>UserControl</SubType> | |||
| </Compile> | |||
| <Compile Include="SimpleTriggerDisplay.Designer.cs"> | |||
| <DependentUpon>SimpleTriggerDisplay.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="ErrorDialog.cs"> | |||
| <SubType>Form</SubType> | |||
| </Compile> | |||
| <Compile Include="ErrorDialog.Designer.cs"> | |||
| <DependentUpon>ErrorDialog.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="JobType.cs" /> | |||
| <Compile Include="NativeJobDetailDisplay.cs"> | |||
| <SubType>UserControl</SubType> | |||
| </Compile> | |||
| <Compile Include="NativeJobDetailDisplay.Designer.cs"> | |||
| <DependentUpon>NativeJobDetailDisplay.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="JobNode.cs" /> | |||
| <Compile Include="MainForm.cs"> | |||
| <SubType>Form</SubType> | |||
| </Compile> | |||
| <Compile Include="MainForm.Designer.cs"> | |||
| <DependentUpon>MainForm.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="Program.cs" /> | |||
| <Compile Include="Properties\AssemblyInfo.cs" /> | |||
| <EmbeddedResource Include="AddJobForm.resx"> | |||
| <DependentUpon>AddJobForm.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="AddListenerForm.resx"> | |||
| <DependentUpon>AddListenerForm.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="DeleteAssembliesForm.resx"> | |||
| <DependentUpon>DeleteAssembliesForm.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="SimpleTriggerDisplay.resx"> | |||
| <DependentUpon>SimpleTriggerDisplay.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="CronTriggerDisplay.resx"> | |||
| <DependentUpon>CronTriggerDisplay.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="ErrorDialog.resx"> | |||
| <DependentUpon>ErrorDialog.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="MainForm.resx"> | |||
| <DependentUpon>MainForm.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="NativeJobDetailDisplay.resx"> | |||
| <DependentUpon>NativeJobDetailDisplay.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="Properties\Resources.resx"> | |||
| <Generator>ResXFileCodeGenerator</Generator> | |||
| <LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||
| <SubType>Designer</SubType> | |||
| </EmbeddedResource> | |||
| <EmbeddedResource Include="ServerConnectForm.resx"> | |||
| <DependentUpon>ServerConnectForm.cs</DependentUpon> | |||
| </EmbeddedResource> | |||
| <Compile Include="Properties\Resources.Designer.cs"> | |||
| <AutoGen>True</AutoGen> | |||
| <DependentUpon>Resources.resx</DependentUpon> | |||
| <DesignTime>True</DesignTime> | |||
| </Compile> | |||
| <None Include="app.config" /> | |||
| <None Include="job_scheduling_data_2_0.xsd"> | |||
| <SubType>Designer</SubType> | |||
| </None> | |||
| <None Include="packages.config" /> | |||
| <None Include="Properties\Settings.settings"> | |||
| <Generator>SettingsSingleFileGenerator</Generator> | |||
| <LastGenOutput>Settings.Designer.cs</LastGenOutput> | |||
| </None> | |||
| <Compile Include="Properties\Settings.Designer.cs"> | |||
| <AutoGen>True</AutoGen> | |||
| <DependentUpon>Settings.settings</DependentUpon> | |||
| <DesignTimeSharedInput>True</DesignTimeSharedInput> | |||
| </Compile> | |||
| <Compile Include="QuartzScheduler.cs" /> | |||
| <Compile Include="RegistryStore.cs" /> | |||
| <Compile Include="SchedulerNode.cs" /> | |||
| <Compile Include="ServerConnectForm.cs"> | |||
| <SubType>Form</SubType> | |||
| </Compile> | |||
| <Compile Include="ServerConnectForm.Designer.cs"> | |||
| <DependentUpon>ServerConnectForm.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="CronTriggerDisplay.cs"> | |||
| <SubType>UserControl</SubType> | |||
| </Compile> | |||
| <Compile Include="CronTriggerDisplay.Designer.cs"> | |||
| <DependentUpon>CronTriggerDisplay.cs</DependentUpon> | |||
| </Compile> | |||
| <Compile Include="TriggerNode.cs" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <Content Include="JobAssemblies.txt"> | |||
| <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | |||
| </Content> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <BootstrapperPackage Include="Microsoft.Net.Client.3.5"> | |||
| <Visible>False</Visible> | |||
| <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> | |||
| <Install>false</Install> | |||
| </BootstrapperPackage> | |||
| <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> | |||
| <Visible>False</Visible> | |||
| <ProductName>.NET Framework 3.5 SP1</ProductName> | |||
| <Install>true</Install> | |||
| </BootstrapperPackage> | |||
| <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1"> | |||
| <Visible>False</Visible> | |||
| <ProductName>Windows Installer 3.1</ProductName> | |||
| <Install>true</Install> | |||
| </BootstrapperPackage> | |||
| </ItemGroup> | |||
| <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||
| <!-- To modify your build process, add your task inside one of the targets below and uncomment it. | |||
| Other similar extension points exist, see Microsoft.Common.targets. | |||
| <Target Name="BeforeBuild"> | |||
| </Target> | |||
| <Target Name="AfterBuild"> | |||
| </Target> | |||
| --> | |||
| </Project> | |||
| @@ -1,35 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public class ConnectionInfo | |||
| { | |||
| public ConnectionInfo() | |||
| { | |||
| } | |||
| public static ConnectionInfo Parse(string connectionString) | |||
| { | |||
| if (connectionString == null) | |||
| { | |||
| return null; | |||
| } | |||
| string[] parameters = connectionString.Split(new string[] { "|" }, StringSplitOptions.None); | |||
| if (parameters.Length != 3) | |||
| { | |||
| return null; | |||
| } | |||
| return new ConnectionInfo { ServerName = parameters[0], Port = int.Parse(parameters[1]), SchedulerName = parameters[2] }; | |||
| } | |||
| public string ServerName { get; set; } | |||
| public int Port { get; set; } | |||
| public string SchedulerName { get; set; } | |||
| public override string ToString() | |||
| { | |||
| return string.Format("{0}|{1}|{2}", ServerName, Port, SchedulerName); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,191 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class CronTriggerDisplay | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Component Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.label1 = new System.Windows.Forms.Label(); | |||
| this.lblName = new System.Windows.Forms.Label(); | |||
| this.label3 = new System.Windows.Forms.Label(); | |||
| this.lblGroup = new System.Windows.Forms.Label(); | |||
| this.label5 = new System.Windows.Forms.Label(); | |||
| this.lblDescription = new System.Windows.Forms.Label(); | |||
| this.label7 = new System.Windows.Forms.Label(); | |||
| this.lblPreviousFireTime = new System.Windows.Forms.Label(); | |||
| this.label9 = new System.Windows.Forms.Label(); | |||
| this.lblNextFireTime = new System.Windows.Forms.Label(); | |||
| this.label11 = new System.Windows.Forms.Label(); | |||
| this.txtCronExpression = new System.Windows.Forms.TextBox(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // label1 | |||
| // | |||
| this.label1.AutoSize = true; | |||
| this.label1.Location = new System.Drawing.Point(14, 26); | |||
| this.label1.Name = "label1"; | |||
| this.label1.Size = new System.Drawing.Size(86, 13); | |||
| this.label1.TabIndex = 0; | |||
| this.label1.Text = "Cron Expression:"; | |||
| // | |||
| // lblName | |||
| // | |||
| this.lblName.AutoSize = true; | |||
| this.lblName.Location = new System.Drawing.Point(116, 47); | |||
| this.lblName.Name = "lblName"; | |||
| this.lblName.Size = new System.Drawing.Size(35, 13); | |||
| this.lblName.TabIndex = 3; | |||
| this.lblName.Text = "label2"; | |||
| // | |||
| // label3 | |||
| // | |||
| this.label3.AutoSize = true; | |||
| this.label3.Location = new System.Drawing.Point(14, 47); | |||
| this.label3.Name = "label3"; | |||
| this.label3.Size = new System.Drawing.Size(38, 13); | |||
| this.label3.TabIndex = 2; | |||
| this.label3.Text = "Name:"; | |||
| // | |||
| // lblGroup | |||
| // | |||
| this.lblGroup.AutoSize = true; | |||
| this.lblGroup.Location = new System.Drawing.Point(116, 68); | |||
| this.lblGroup.Name = "lblGroup"; | |||
| this.lblGroup.Size = new System.Drawing.Size(35, 13); | |||
| this.lblGroup.TabIndex = 5; | |||
| this.lblGroup.Text = "label4"; | |||
| // | |||
| // label5 | |||
| // | |||
| this.label5.AutoSize = true; | |||
| this.label5.Location = new System.Drawing.Point(14, 68); | |||
| this.label5.Name = "label5"; | |||
| this.label5.Size = new System.Drawing.Size(39, 13); | |||
| this.label5.TabIndex = 4; | |||
| this.label5.Text = "Group:"; | |||
| // | |||
| // lblDescription | |||
| // | |||
| this.lblDescription.AutoSize = true; | |||
| this.lblDescription.Location = new System.Drawing.Point(116, 89); | |||
| this.lblDescription.Name = "lblDescription"; | |||
| this.lblDescription.Size = new System.Drawing.Size(35, 13); | |||
| this.lblDescription.TabIndex = 7; | |||
| this.lblDescription.Text = "label6"; | |||
| // | |||
| // label7 | |||
| // | |||
| this.label7.AutoSize = true; | |||
| this.label7.Location = new System.Drawing.Point(14, 89); | |||
| this.label7.Name = "label7"; | |||
| this.label7.Size = new System.Drawing.Size(63, 13); | |||
| this.label7.TabIndex = 6; | |||
| this.label7.Text = "Description:"; | |||
| // | |||
| // lblPreviousFireTime | |||
| // | |||
| this.lblPreviousFireTime.AutoSize = true; | |||
| this.lblPreviousFireTime.Location = new System.Drawing.Point(116, 131); | |||
| this.lblPreviousFireTime.Name = "lblPreviousFireTime"; | |||
| this.lblPreviousFireTime.Size = new System.Drawing.Size(35, 13); | |||
| this.lblPreviousFireTime.TabIndex = 9; | |||
| this.lblPreviousFireTime.Text = "label8"; | |||
| // | |||
| // label9 | |||
| // | |||
| this.label9.AutoSize = true; | |||
| this.label9.Location = new System.Drawing.Point(14, 131); | |||
| this.label9.Name = "label9"; | |||
| this.label9.Size = new System.Drawing.Size(97, 13); | |||
| this.label9.TabIndex = 8; | |||
| this.label9.Text = "Previous Fire Time:"; | |||
| // | |||
| // lblNextFireTime | |||
| // | |||
| this.lblNextFireTime.AutoSize = true; | |||
| this.lblNextFireTime.Location = new System.Drawing.Point(116, 110); | |||
| this.lblNextFireTime.Name = "lblNextFireTime"; | |||
| this.lblNextFireTime.Size = new System.Drawing.Size(41, 13); | |||
| this.lblNextFireTime.TabIndex = 11; | |||
| this.lblNextFireTime.Text = "label10"; | |||
| // | |||
| // label11 | |||
| // | |||
| this.label11.AutoSize = true; | |||
| this.label11.Location = new System.Drawing.Point(14, 110); | |||
| this.label11.Name = "label11"; | |||
| this.label11.Size = new System.Drawing.Size(78, 13); | |||
| this.label11.TabIndex = 10; | |||
| this.label11.Text = "Next Fire Time:"; | |||
| // | |||
| // txtCronExpression | |||
| // | |||
| this.txtCronExpression.Location = new System.Drawing.Point(119, 23); | |||
| this.txtCronExpression.Name = "txtCronExpression"; | |||
| this.txtCronExpression.ReadOnly = true; | |||
| this.txtCronExpression.Size = new System.Drawing.Size(100, 20); | |||
| this.txtCronExpression.TabIndex = 12; | |||
| this.txtCronExpression.Text = "txtCronExpression"; | |||
| // | |||
| // CronTriggerDisplay | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.Controls.Add(this.txtCronExpression); | |||
| this.Controls.Add(this.lblNextFireTime); | |||
| this.Controls.Add(this.label11); | |||
| this.Controls.Add(this.lblPreviousFireTime); | |||
| this.Controls.Add(this.label9); | |||
| this.Controls.Add(this.lblDescription); | |||
| this.Controls.Add(this.label7); | |||
| this.Controls.Add(this.lblGroup); | |||
| this.Controls.Add(this.label5); | |||
| this.Controls.Add(this.lblName); | |||
| this.Controls.Add(this.label3); | |||
| this.Controls.Add(this.label1); | |||
| this.Name = "CronTriggerDisplay"; | |||
| this.Size = new System.Drawing.Size(324, 168); | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.Label label1; | |||
| private System.Windows.Forms.Label lblName; | |||
| private System.Windows.Forms.Label label3; | |||
| private System.Windows.Forms.Label lblGroup; | |||
| private System.Windows.Forms.Label label5; | |||
| private System.Windows.Forms.Label lblDescription; | |||
| private System.Windows.Forms.Label label7; | |||
| private System.Windows.Forms.Label lblPreviousFireTime; | |||
| private System.Windows.Forms.Label label9; | |||
| private System.Windows.Forms.Label lblNextFireTime; | |||
| private System.Windows.Forms.Label label11; | |||
| private System.Windows.Forms.TextBox txtCronExpression; | |||
| } | |||
| } | |||
| @@ -1,55 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Drawing; | |||
| using System.Data; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Quartz; | |||
| using Quartz.Impl.Triggers; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class CronTriggerDisplay : UserControl | |||
| { | |||
| public CronTriggerDisplay() | |||
| { | |||
| InitializeComponent(); | |||
| this.Load += new EventHandler(CronTriggerDisplay_Load); | |||
| } | |||
| void CronTriggerDisplay_Load(object sender, EventArgs e) | |||
| { | |||
| txtCronExpression.Text = _Trigger.CronExpressionString; | |||
| lblDescription.Text = _Trigger.Description; | |||
| lblGroup.Text = _Trigger.Key.Group; | |||
| lblName.Text = _Trigger.Key.Name; | |||
| if (_Trigger.GetNextFireTimeUtc().HasValue) | |||
| { | |||
| lblNextFireTime.Text = _Trigger.GetNextFireTimeUtc().Value.ToLocalTime().ToString(); | |||
| } | |||
| else | |||
| { | |||
| lblNextFireTime.Text = "Unknown"; | |||
| } | |||
| if (_Trigger.GetPreviousFireTimeUtc().HasValue) | |||
| { | |||
| lblPreviousFireTime.Text = _Trigger.GetPreviousFireTimeUtc().Value.ToLocalTime().ToString(); | |||
| } | |||
| else | |||
| { | |||
| lblPreviousFireTime.Text = "Unknown"; | |||
| } | |||
| } | |||
| public CronTriggerDisplay(ICronTrigger trigger) | |||
| : this() | |||
| { | |||
| _Trigger = trigger; | |||
| } | |||
| private ICronTrigger _Trigger; | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,72 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class DeleteAssembliesForm | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Windows Form Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.lbxAssemblies = new System.Windows.Forms.ListBox(); | |||
| this.btnDelete = new System.Windows.Forms.Button(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // lbxAssemblies | |||
| // | |||
| this.lbxAssemblies.FormattingEnabled = true; | |||
| this.lbxAssemblies.Location = new System.Drawing.Point(42, 25); | |||
| this.lbxAssemblies.Name = "lbxAssemblies"; | |||
| this.lbxAssemblies.Size = new System.Drawing.Size(162, 212); | |||
| this.lbxAssemblies.TabIndex = 0; | |||
| // | |||
| // btnDelete | |||
| // | |||
| this.btnDelete.Location = new System.Drawing.Point(80, 243); | |||
| this.btnDelete.Name = "btnDelete"; | |||
| this.btnDelete.Size = new System.Drawing.Size(75, 23); | |||
| this.btnDelete.TabIndex = 1; | |||
| this.btnDelete.Text = "Delete"; | |||
| this.btnDelete.UseVisualStyleBackColor = true; | |||
| this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); | |||
| // | |||
| // DeleteAssembliesForm | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.ClientSize = new System.Drawing.Size(247, 291); | |||
| this.Controls.Add(this.btnDelete); | |||
| this.Controls.Add(this.lbxAssemblies); | |||
| this.Name = "DeleteAssembliesForm"; | |||
| this.Text = "DeleteAssembliesForm"; | |||
| this.Load += new System.EventHandler(this.DeleteAssembliesForm_Load); | |||
| this.ResumeLayout(false); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.ListBox lbxAssemblies; | |||
| private System.Windows.Forms.Button btnDelete; | |||
| } | |||
| } | |||
| @@ -1,33 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Data; | |||
| using System.Drawing; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class DeleteAssembliesForm : Form | |||
| { | |||
| public DeleteAssembliesForm() | |||
| { | |||
| InitializeComponent(); | |||
| } | |||
| private void btnDelete_Click(object sender, EventArgs e) | |||
| { | |||
| if (lbxAssemblies.SelectedItem != null) | |||
| { | |||
| AssemblyRepository.DeleteAssembly(lbxAssemblies.SelectedItem as string); | |||
| lbxAssemblies.DataSource = AssemblyRepository.GetAssemblies().ToList(); | |||
| } | |||
| } | |||
| private void DeleteAssembliesForm_Load(object sender, EventArgs e) | |||
| { | |||
| lbxAssemblies.DataSource = AssemblyRepository.GetAssemblies().ToList(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,84 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class ErrorDialog | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Windows Form Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.btnOk = new System.Windows.Forms.Button(); | |||
| this.lblMessage = new System.Windows.Forms.Label(); | |||
| this.txtLongMessage = new System.Windows.Forms.TextBox(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // btnOk | |||
| // | |||
| this.btnOk.Location = new System.Drawing.Point(168, 184); | |||
| this.btnOk.Name = "btnOk"; | |||
| this.btnOk.Size = new System.Drawing.Size(75, 23); | |||
| this.btnOk.TabIndex = 0; | |||
| this.btnOk.Text = "OK"; | |||
| this.btnOk.UseVisualStyleBackColor = true; | |||
| this.btnOk.Click += new System.EventHandler(this.btnOk_Click); | |||
| // | |||
| // lblMessage | |||
| // | |||
| this.lblMessage.AutoSize = true; | |||
| this.lblMessage.Location = new System.Drawing.Point(41, 44); | |||
| this.lblMessage.Name = "lblMessage"; | |||
| this.lblMessage.Size = new System.Drawing.Size(29, 13); | |||
| this.lblMessage.TabIndex = 1; | |||
| this.lblMessage.Text = "Error"; | |||
| // | |||
| // txtLongMessage | |||
| // | |||
| this.txtLongMessage.Location = new System.Drawing.Point(44, 72); | |||
| this.txtLongMessage.Multiline = true; | |||
| this.txtLongMessage.Name = "txtLongMessage"; | |||
| this.txtLongMessage.Size = new System.Drawing.Size(335, 96); | |||
| this.txtLongMessage.TabIndex = 2; | |||
| // | |||
| // ErrorDialog | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.ClientSize = new System.Drawing.Size(437, 266); | |||
| this.Controls.Add(this.txtLongMessage); | |||
| this.Controls.Add(this.lblMessage); | |||
| this.Controls.Add(this.btnOk); | |||
| this.Name = "ErrorDialog"; | |||
| this.Text = "ErrorDialog"; | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.Button btnOk; | |||
| private System.Windows.Forms.Label lblMessage; | |||
| private System.Windows.Forms.TextBox txtLongMessage; | |||
| } | |||
| } | |||
| @@ -1,32 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Data; | |||
| using System.Drawing; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class ErrorDialog : Form | |||
| { | |||
| public ErrorDialog() | |||
| { | |||
| InitializeComponent(); | |||
| Load += new EventHandler(ErrorDialog_Load); | |||
| } | |||
| void ErrorDialog_Load(object sender, EventArgs e) | |||
| { | |||
| lblMessage.Text = Message; | |||
| txtLongMessage.Text = Description; | |||
| } | |||
| public string Message { get; set; } | |||
| public string Description { get; set; } | |||
| private void btnOk_Click(object sender, EventArgs e) | |||
| { | |||
| this.Close(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1 +0,0 @@ | |||
| Quartz.dll | |||
| @@ -1,22 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Quartz; | |||
| using Quartz.Impl; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public class JobNode : TreeNode | |||
| { | |||
| public JobNode(IJobDetail jobDetail) | |||
| : base() | |||
| { | |||
| this.Text = jobDetail.Key.Name; | |||
| Detail = jobDetail; | |||
| } | |||
| public IJobDetail Detail { get; private set; } | |||
| } | |||
| } | |||
| @@ -1,17 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| class JobType | |||
| { | |||
| public string FullName { get; set; } | |||
| public string AssemblyName { get; set; } | |||
| public override string ToString() | |||
| { | |||
| return FullName; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,390 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class MainForm | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Windows Form Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.components = new System.ComponentModel.Container(); | |||
| this.mainMenuStrip = new System.Windows.Forms.MenuStrip(); | |||
| this.schedulerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.connectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.jobsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.addJobToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.listenersStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.globalListenersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.addGlobalJobListenerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.addTriggerListenerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.addJobListenerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.statusStrip1 = new System.Windows.Forms.StatusStrip(); | |||
| this.serverConnectStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); | |||
| this.StripStatusLabel_Job_Groups = new System.Windows.Forms.ToolStripStatusLabel(); | |||
| this.StripStatusLabel_Jobs_Refresh_date = new System.Windows.Forms.ToolStripStatusLabel(); | |||
| this.jobGroupsTreeView = new System.Windows.Forms.TreeView(); | |||
| this.label1 = new System.Windows.Forms.Label(); | |||
| this.label2 = new System.Windows.Forms.Label(); | |||
| this.btnRefreshRunningJobs = new System.Windows.Forms.Button(); | |||
| this.btnRefreshJobGroups = new System.Windows.Forms.Button(); | |||
| this.btnDeleteJob = new System.Windows.Forms.Button(); | |||
| this.btnRunJobNow = new System.Windows.Forms.Button(); | |||
| this.btnPause = new System.Windows.Forms.Button(); | |||
| this.pnlDetails = new System.Windows.Forms.Panel(); | |||
| this.label3 = new System.Windows.Forms.Label(); | |||
| this.btnEdit = new System.Windows.Forms.Button(); | |||
| this.ctxScheduler = new System.Windows.Forms.ContextMenuStrip(this.components); | |||
| this.backupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.timer_Refresh_Running_Jobs = new System.Windows.Forms.Timer(this.components); | |||
| this.listView_RunningJobs = new System.Windows.Forms.ListView(); | |||
| this.JobName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
| this.JobDuration = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); | |||
| this.jobAssembliesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.addAssemblyMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.deleteAssemblyMenuItem = new System.Windows.Forms.ToolStripMenuItem(); | |||
| this.mainMenuStrip.SuspendLayout(); | |||
| this.statusStrip1.SuspendLayout(); | |||
| this.ctxScheduler.SuspendLayout(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // mainMenuStrip | |||
| // | |||
| this.mainMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||
| this.schedulerToolStripMenuItem, | |||
| this.jobsToolStripMenuItem, | |||
| this.listenersStripMenuItem, | |||
| this.jobAssembliesToolStripMenuItem}); | |||
| this.mainMenuStrip.Location = new System.Drawing.Point(0, 0); | |||
| this.mainMenuStrip.Name = "mainMenuStrip"; | |||
| this.mainMenuStrip.Size = new System.Drawing.Size(913, 24); | |||
| this.mainMenuStrip.TabIndex = 0; | |||
| this.mainMenuStrip.Text = "menuStrip1"; | |||
| // | |||
| // schedulerToolStripMenuItem | |||
| // | |||
| this.schedulerToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||
| this.connectToolStripMenuItem}); | |||
| this.schedulerToolStripMenuItem.Name = "schedulerToolStripMenuItem"; | |||
| this.schedulerToolStripMenuItem.Size = new System.Drawing.Size(71, 20); | |||
| this.schedulerToolStripMenuItem.Text = "Scheduler"; | |||
| // | |||
| // connectToolStripMenuItem | |||
| // | |||
| this.connectToolStripMenuItem.Name = "connectToolStripMenuItem"; | |||
| this.connectToolStripMenuItem.Size = new System.Drawing.Size(152, 22); | |||
| this.connectToolStripMenuItem.Text = "Connect"; | |||
| this.connectToolStripMenuItem.Click += new System.EventHandler(this.connectToolStripMenuItem_Click); | |||
| // | |||
| // jobsToolStripMenuItem | |||
| // | |||
| this.jobsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||
| this.addJobToolStripMenuItem}); | |||
| this.jobsToolStripMenuItem.Enabled = false; | |||
| this.jobsToolStripMenuItem.Name = "jobsToolStripMenuItem"; | |||
| this.jobsToolStripMenuItem.Size = new System.Drawing.Size(42, 20); | |||
| this.jobsToolStripMenuItem.Text = "Jobs"; | |||
| // | |||
| // addJobToolStripMenuItem | |||
| // | |||
| this.addJobToolStripMenuItem.Name = "addJobToolStripMenuItem"; | |||
| this.addJobToolStripMenuItem.Size = new System.Drawing.Size(96, 22); | |||
| this.addJobToolStripMenuItem.Text = "Add"; | |||
| this.addJobToolStripMenuItem.Click += new System.EventHandler(this.addJobToolStripMenuItem_Click); | |||
| // | |||
| // statusStrip1 | |||
| // | |||
| this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||
| this.serverConnectStatusLabel, | |||
| this.StripStatusLabel_Job_Groups, | |||
| this.StripStatusLabel_Jobs_Refresh_date}); | |||
| this.statusStrip1.Location = new System.Drawing.Point(0, 639); | |||
| this.statusStrip1.Name = "statusStrip1"; | |||
| this.statusStrip1.Size = new System.Drawing.Size(913, 22); | |||
| this.statusStrip1.TabIndex = 1; | |||
| this.statusStrip1.Text = "statusStrip1"; | |||
| // | |||
| // serverConnectStatusLabel | |||
| // | |||
| this.serverConnectStatusLabel.Name = "serverConnectStatusLabel"; | |||
| this.serverConnectStatusLabel.Size = new System.Drawing.Size(86, 17); | |||
| this.serverConnectStatusLabel.Text = "Not connected"; | |||
| // | |||
| // StripStatusLabel_Job_Groups | |||
| // | |||
| this.StripStatusLabel_Job_Groups.BackColor = System.Drawing.Color.LightCyan; | |||
| this.StripStatusLabel_Job_Groups.Name = "StripStatusLabel_Job_Groups"; | |||
| this.StripStatusLabel_Job_Groups.Size = new System.Drawing.Size(157, 17); | |||
| this.StripStatusLabel_Job_Groups.Text = "StripStatusLabel_Job_Groups"; | |||
| this.StripStatusLabel_Job_Groups.ToolTipText = "Last Refresh of Job Groups"; | |||
| // | |||
| // StripStatusLabel_Jobs_Refresh_date | |||
| // | |||
| this.StripStatusLabel_Jobs_Refresh_date.BackColor = System.Drawing.SystemColors.ActiveCaptionText; | |||
| this.StripStatusLabel_Jobs_Refresh_date.Name = "StripStatusLabel_Jobs_Refresh_date"; | |||
| this.StripStatusLabel_Jobs_Refresh_date.Size = new System.Drawing.Size(191, 17); | |||
| this.StripStatusLabel_Jobs_Refresh_date.Text = "StripStatusLabel_Jobs_Refresh_date"; | |||
| this.StripStatusLabel_Jobs_Refresh_date.ToolTipText = "Last Refresh Date of Running Jobs"; | |||
| // | |||
| // jobGroupsTreeView | |||
| // | |||
| this.jobGroupsTreeView.HideSelection = false; | |||
| this.jobGroupsTreeView.Location = new System.Drawing.Point(8, 48); | |||
| this.jobGroupsTreeView.Name = "jobGroupsTreeView"; | |||
| this.jobGroupsTreeView.Size = new System.Drawing.Size(351, 252); | |||
| this.jobGroupsTreeView.TabIndex = 2; | |||
| // | |||
| // label1 | |||
| // | |||
| this.label1.AutoSize = true; | |||
| this.label1.Location = new System.Drawing.Point(8, 32); | |||
| this.label1.Name = "label1"; | |||
| this.label1.Size = new System.Drawing.Size(94, 13); | |||
| this.label1.TabIndex = 4; | |||
| this.label1.Text = "Scheduler Objects"; | |||
| // | |||
| // label2 | |||
| // | |||
| this.label2.AutoSize = true; | |||
| this.label2.Location = new System.Drawing.Point(9, 319); | |||
| this.label2.Name = "label2"; | |||
| this.label2.Size = new System.Drawing.Size(72, 13); | |||
| this.label2.TabIndex = 5; | |||
| this.label2.Text = "Running Jobs"; | |||
| // | |||
| // btnRefreshRunningJobs | |||
| // | |||
| this.btnRefreshRunningJobs.Location = new System.Drawing.Point(371, 609); | |||
| this.btnRefreshRunningJobs.Name = "btnRefreshRunningJobs"; | |||
| this.btnRefreshRunningJobs.Size = new System.Drawing.Size(75, 23); | |||
| this.btnRefreshRunningJobs.TabIndex = 6; | |||
| this.btnRefreshRunningJobs.Text = "Refresh"; | |||
| this.btnRefreshRunningJobs.UseVisualStyleBackColor = true; | |||
| this.btnRefreshRunningJobs.Click += new System.EventHandler(this.btnRefreshRunningJobs_Click); | |||
| // | |||
| // btnRefreshJobGroups | |||
| // | |||
| this.btnRefreshJobGroups.Location = new System.Drawing.Point(284, 306); | |||
| this.btnRefreshJobGroups.Name = "btnRefreshJobGroups"; | |||
| this.btnRefreshJobGroups.Size = new System.Drawing.Size(75, 23); | |||
| this.btnRefreshJobGroups.TabIndex = 7; | |||
| this.btnRefreshJobGroups.Text = "Refresh"; | |||
| this.btnRefreshJobGroups.UseVisualStyleBackColor = true; | |||
| this.btnRefreshJobGroups.Click += new System.EventHandler(this.btnRefreshJobGroups_Click); | |||
| // | |||
| // btnDeleteJob | |||
| // | |||
| this.btnDeleteJob.Enabled = false; | |||
| this.btnDeleteJob.Location = new System.Drawing.Point(533, 306); | |||
| this.btnDeleteJob.Name = "btnDeleteJob"; | |||
| this.btnDeleteJob.Size = new System.Drawing.Size(65, 23); | |||
| this.btnDeleteJob.TabIndex = 8; | |||
| this.btnDeleteJob.Text = "Delete"; | |||
| this.btnDeleteJob.UseVisualStyleBackColor = true; | |||
| this.btnDeleteJob.Click += new System.EventHandler(this.btnDeleteJob_Click); | |||
| // | |||
| // btnRunJobNow | |||
| // | |||
| this.btnRunJobNow.Enabled = false; | |||
| this.btnRunJobNow.Location = new System.Drawing.Point(391, 306); | |||
| this.btnRunJobNow.Name = "btnRunJobNow"; | |||
| this.btnRunJobNow.Size = new System.Drawing.Size(65, 23); | |||
| this.btnRunJobNow.TabIndex = 9; | |||
| this.btnRunJobNow.Text = "Run"; | |||
| this.btnRunJobNow.UseVisualStyleBackColor = true; | |||
| this.btnRunJobNow.Click += new System.EventHandler(this.btnRunJobNow_Click); | |||
| // | |||
| // btnPause | |||
| // | |||
| this.btnPause.Enabled = false; | |||
| this.btnPause.Location = new System.Drawing.Point(462, 306); | |||
| this.btnPause.Name = "btnPause"; | |||
| this.btnPause.Size = new System.Drawing.Size(65, 23); | |||
| this.btnPause.TabIndex = 10; | |||
| this.btnPause.Text = "Pause"; | |||
| this.btnPause.UseVisualStyleBackColor = true; | |||
| this.btnPause.Click += new System.EventHandler(this.btnPause_Click); | |||
| // | |||
| // pnlDetails | |||
| // | |||
| this.pnlDetails.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |||
| this.pnlDetails.Location = new System.Drawing.Point(391, 45); | |||
| this.pnlDetails.Name = "pnlDetails"; | |||
| this.pnlDetails.Size = new System.Drawing.Size(342, 252); | |||
| this.pnlDetails.TabIndex = 11; | |||
| // | |||
| // label3 | |||
| // | |||
| this.label3.AutoSize = true; | |||
| this.label3.Location = new System.Drawing.Point(388, 29); | |||
| this.label3.Name = "label3"; | |||
| this.label3.Size = new System.Drawing.Size(39, 13); | |||
| this.label3.TabIndex = 12; | |||
| this.label3.Text = "Details"; | |||
| // | |||
| // btnEdit | |||
| // | |||
| this.btnEdit.Enabled = false; | |||
| this.btnEdit.Location = new System.Drawing.Point(604, 306); | |||
| this.btnEdit.Name = "btnEdit"; | |||
| this.btnEdit.Size = new System.Drawing.Size(65, 23); | |||
| this.btnEdit.TabIndex = 13; | |||
| this.btnEdit.Text = "Edit"; | |||
| this.btnEdit.UseVisualStyleBackColor = true; | |||
| this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); | |||
| // | |||
| // ctxScheduler | |||
| // | |||
| this.ctxScheduler.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||
| this.backupToolStripMenuItem}); | |||
| this.ctxScheduler.Name = "ctxScheduler"; | |||
| this.ctxScheduler.Size = new System.Drawing.Size(109, 26); | |||
| // | |||
| // backupToolStripMenuItem | |||
| // | |||
| this.backupToolStripMenuItem.Name = "backupToolStripMenuItem"; | |||
| this.backupToolStripMenuItem.Size = new System.Drawing.Size(108, 22); | |||
| this.backupToolStripMenuItem.Text = "Backup"; | |||
| this.backupToolStripMenuItem.Click += new System.EventHandler(this.backupToolStripMenuItem_Click); | |||
| // | |||
| // timer_Refresh_Running_Jobs | |||
| // | |||
| this.timer_Refresh_Running_Jobs.Interval = 30000; | |||
| this.timer_Refresh_Running_Jobs.Tick += new System.EventHandler(this.timer_Refresh_Running_Jobs_Tick); | |||
| // | |||
| // listView_RunningJobs | |||
| // | |||
| this.listView_RunningJobs.AllowColumnReorder = true; | |||
| this.listView_RunningJobs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { | |||
| this.JobName, | |||
| this.JobDuration}); | |||
| this.listView_RunningJobs.Location = new System.Drawing.Point(8, 335); | |||
| this.listView_RunningJobs.Name = "listView_RunningJobs"; | |||
| this.listView_RunningJobs.Size = new System.Drawing.Size(725, 268); | |||
| this.listView_RunningJobs.Sorting = System.Windows.Forms.SortOrder.Ascending; | |||
| this.listView_RunningJobs.TabIndex = 14; | |||
| this.listView_RunningJobs.UseCompatibleStateImageBehavior = false; | |||
| this.listView_RunningJobs.View = System.Windows.Forms.View.Details; | |||
| // | |||
| // JobName | |||
| // | |||
| this.JobName.Text = "Job Name"; | |||
| // | |||
| // JobDuration | |||
| // | |||
| this.JobDuration.Text = "Duration"; | |||
| // | |||
| // jobAssembliesToolStripMenuItem | |||
| // | |||
| this.jobAssembliesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { | |||
| this.addAssemblyMenuItem, | |||
| this.deleteAssemblyMenuItem}); | |||
| this.jobAssembliesToolStripMenuItem.Name = "jobAssembliesToolStripMenuItem"; | |||
| this.jobAssembliesToolStripMenuItem.Size = new System.Drawing.Size(99, 20); | |||
| this.jobAssembliesToolStripMenuItem.Text = "Job Assemblies"; | |||
| // | |||
| // addAssemblyMenuItem | |||
| // | |||
| this.addAssemblyMenuItem.Name = "addAssemblyMenuItem"; | |||
| this.addAssemblyMenuItem.Size = new System.Drawing.Size(152, 22); | |||
| this.addAssemblyMenuItem.Text = "Add"; | |||
| this.addAssemblyMenuItem.Click += new System.EventHandler(this.addAssemblyMenuItem_Click); | |||
| // | |||
| // deleteAssemblyMenuItem | |||
| // | |||
| this.deleteAssemblyMenuItem.Name = "deleteAssemblyMenuItem"; | |||
| this.deleteAssemblyMenuItem.Size = new System.Drawing.Size(152, 22); | |||
| this.deleteAssemblyMenuItem.Text = "Delete"; | |||
| this.deleteAssemblyMenuItem.Click += new System.EventHandler(this.deleteAssemblyMenuItem_Click); | |||
| // | |||
| // MainForm | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.ClientSize = new System.Drawing.Size(913, 661); | |||
| this.Controls.Add(this.btnRefreshJobGroups); | |||
| this.Controls.Add(this.listView_RunningJobs); | |||
| this.Controls.Add(this.pnlDetails); | |||
| this.Controls.Add(this.label3); | |||
| this.Controls.Add(this.label1); | |||
| this.Controls.Add(this.btnEdit); | |||
| this.Controls.Add(this.btnRefreshRunningJobs); | |||
| this.Controls.Add(this.btnPause); | |||
| this.Controls.Add(this.label2); | |||
| this.Controls.Add(this.statusStrip1); | |||
| this.Controls.Add(this.mainMenuStrip); | |||
| this.Controls.Add(this.btnRunJobNow); | |||
| this.Controls.Add(this.jobGroupsTreeView); | |||
| this.Controls.Add(this.btnDeleteJob); | |||
| this.MainMenuStrip = this.mainMenuStrip; | |||
| this.Name = "MainForm"; | |||
| this.Text = "Quartz Manager"; | |||
| this.mainMenuStrip.ResumeLayout(false); | |||
| this.mainMenuStrip.PerformLayout(); | |||
| this.statusStrip1.ResumeLayout(false); | |||
| this.statusStrip1.PerformLayout(); | |||
| this.ctxScheduler.ResumeLayout(false); | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.MenuStrip mainMenuStrip; | |||
| private System.Windows.Forms.ToolStripMenuItem schedulerToolStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem connectToolStripMenuItem; | |||
| private System.Windows.Forms.StatusStrip statusStrip1; | |||
| private System.Windows.Forms.ToolStripStatusLabel serverConnectStatusLabel; | |||
| private System.Windows.Forms.TreeView jobGroupsTreeView; | |||
| private System.Windows.Forms.ToolStripMenuItem listenersStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem globalListenersToolStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem addGlobalJobListenerToolStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem addTriggerListenerToolStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem addJobListenerToolStripMenuItem; | |||
| private System.Windows.Forms.Label label1; | |||
| private System.Windows.Forms.Label label2; | |||
| private System.Windows.Forms.ToolStripMenuItem jobsToolStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem addJobToolStripMenuItem; | |||
| private System.Windows.Forms.Button btnRefreshRunningJobs; | |||
| private System.Windows.Forms.Button btnRefreshJobGroups; | |||
| private System.Windows.Forms.Button btnDeleteJob; | |||
| private System.Windows.Forms.Button btnRunJobNow; | |||
| private System.Windows.Forms.Button btnPause; | |||
| private System.Windows.Forms.Panel pnlDetails; | |||
| private System.Windows.Forms.Label label3; | |||
| private System.Windows.Forms.Button btnEdit; | |||
| private System.Windows.Forms.ContextMenuStrip ctxScheduler; | |||
| private System.Windows.Forms.ToolStripMenuItem backupToolStripMenuItem; | |||
| private System.Windows.Forms.Timer timer_Refresh_Running_Jobs; | |||
| private System.Windows.Forms.ToolStripStatusLabel StripStatusLabel_Jobs_Refresh_date; | |||
| private System.Windows.Forms.ToolStripStatusLabel StripStatusLabel_Job_Groups; | |||
| private System.Windows.Forms.ListView listView_RunningJobs; | |||
| private System.Windows.Forms.ColumnHeader JobName; | |||
| private System.Windows.Forms.ColumnHeader JobDuration; | |||
| private System.Windows.Forms.ToolStripMenuItem jobAssembliesToolStripMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem addAssemblyMenuItem; | |||
| private System.Windows.Forms.ToolStripMenuItem deleteAssemblyMenuItem; | |||
| } | |||
| } | |||
| @@ -1,452 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Data; | |||
| using System.Drawing; | |||
| using System.Linq; | |||
| using System.Reflection; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Common.Logging; | |||
| using Quartz; | |||
| using Quartz.Collection; | |||
| using System.Net.Sockets; | |||
| //using ClickForensics.Quartz.Jobs; | |||
| using System.IO; | |||
| using Quartz.Impl; | |||
| using Quartz.Impl.Matchers; | |||
| using Quartz.Impl.Triggers; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class MainForm : Form | |||
| { | |||
| public MainForm() | |||
| { | |||
| InitializeComponent(); | |||
| jobGroupsTreeView.AfterSelect += new TreeViewEventHandler(jobGroupsTreeView_AfterSelect); | |||
| jobGroupsTreeView.MouseDown += new MouseEventHandler(jobGroupsTreeView_MouseDown); | |||
| } | |||
| void jobGroupsTreeView_AfterSelect(object sender, TreeViewEventArgs e) | |||
| { | |||
| jobDetailsToggle(false); | |||
| if (e.Node is TriggerNode || e.Node is JobNode) | |||
| { | |||
| btnDeleteJob.Enabled = true; | |||
| } | |||
| else | |||
| { | |||
| btnDeleteJob.Enabled = false; | |||
| } | |||
| if (e.Node is JobNode) | |||
| { | |||
| btnRunJobNow.Enabled = true; | |||
| pnlDetails.Controls.Add(new NativeJobDetailDisplay(((JobNode)e.Node).Detail)); | |||
| jobDetailsToggle(true); | |||
| } | |||
| else | |||
| { | |||
| btnRunJobNow.Enabled = false; | |||
| } | |||
| if (e.Node is TriggerNode) | |||
| { | |||
| btnPause.Enabled = true; | |||
| setPauseButtonText(); | |||
| if (((TriggerNode)e.Node).Trigger is ICronTrigger) | |||
| { | |||
| pnlDetails.Controls.Add(new CronTriggerDisplay((ICronTrigger)((TriggerNode)e.Node).Trigger)); | |||
| jobDetailsToggle(true); | |||
| } | |||
| if (((TriggerNode)e.Node).Trigger is ISimpleTrigger) | |||
| { | |||
| pnlDetails.Controls.Add(new SimpleTriggerDisplay((ISimpleTrigger)((TriggerNode)e.Node).Trigger)); | |||
| jobDetailsToggle(true); | |||
| } | |||
| btnEdit.Enabled = true; | |||
| } | |||
| else | |||
| { | |||
| btnEdit.Enabled = false; | |||
| btnPause.Enabled = false; | |||
| } | |||
| } | |||
| private void setPauseButtonText() | |||
| { | |||
| TriggerNode node = (TriggerNode)jobGroupsTreeView.SelectedNode; | |||
| QuartzScheduler scheduler = getScheduler(node); | |||
| if (scheduler.GetScheduler().GetTriggerState(node.Trigger.Key) == TriggerState.Paused) | |||
| { | |||
| btnPause.Text = "Resume"; | |||
| } | |||
| else | |||
| { | |||
| btnPause.Text = "Pause"; | |||
| } | |||
| } | |||
| private void connectToolStripMenuItem_Click(object sender, EventArgs e) | |||
| { | |||
| using (ServerConnectForm form = new ServerConnectForm()) | |||
| { | |||
| form.ShowDialog(); | |||
| if (!form.Cancelled) | |||
| { | |||
| try | |||
| { | |||
| QuartzScheduler scheduler = new QuartzScheduler(form.Server, form.Port, form.Scheduler); | |||
| serverConnectStatusLabel.Text = string.Format("Connected to {0}", scheduler.Address); | |||
| jobsToolStripMenuItem.Enabled = true; | |||
| loadJobGroups(scheduler); | |||
| updateRunningJobs(); | |||
| } | |||
| catch (SocketException ex) | |||
| { | |||
| ErrorDialog dialog = new ErrorDialog(); | |||
| dialog.Message = string.Format("Unable to connect to scheduler {0} on {1}:{2}", form.Scheduler, form.Server, form.Port); | |||
| dialog.Description = ex.Message; | |||
| dialog.ShowDialog(); | |||
| } | |||
| } | |||
| form.Close(); | |||
| } | |||
| } | |||
| private void loadJobGroups(QuartzScheduler scheduler) | |||
| { | |||
| try | |||
| { | |||
| this.Cursor = Cursors.WaitCursor; | |||
| jobDetailsToggle(false); | |||
| SchedulerNode schedulerNode = new SchedulerNode(scheduler); | |||
| if (jobGroupsTreeView.Nodes.ContainsKey(schedulerNode.Name)) | |||
| { | |||
| jobGroupsTreeView.Nodes.RemoveByKey(schedulerNode.Name); | |||
| } | |||
| schedulerNode.ContextMenuStrip = ctxScheduler; | |||
| jobGroupsTreeView.Nodes.Add(schedulerNode); | |||
| TreeNode jobGroupsNode = schedulerNode.Nodes.Add("Job Groups"); | |||
| var jobGroups = scheduler.GetScheduler().GetJobGroupNames(); | |||
| foreach (string jobGroup in jobGroups) | |||
| { | |||
| TreeNode jobGroupNode = jobGroupsNode.Nodes.Add(jobGroup); | |||
| TreeNode jobsNode = jobGroupNode.Nodes.Add("Jobs"); | |||
| addJobNodes(jobsNode); | |||
| } | |||
| jobGroupsTreeView.Nodes[0].Expand(); | |||
| jobGroupsNode.Expand(); | |||
| StripStatusLabel_Job_Groups.Text = DateTime.Now.ToString("yyyy.MM.dd HH:mm.ss"); | |||
| loadOrphanJobs(schedulerNode); | |||
| loadStuckTriggers(schedulerNode); | |||
| loadCalendars(schedulerNode); | |||
| } | |||
| finally | |||
| { | |||
| this.Cursor = Cursors.Default; | |||
| } | |||
| } | |||
| private static void loadCalendars(SchedulerNode schedulerNode) | |||
| { | |||
| TreeNode calendarsNode = schedulerNode.Nodes.Add("Calendars"); | |||
| foreach (var calendarName in schedulerNode.Scheduler.GetScheduler().GetCalendarNames()) | |||
| { | |||
| //TODO: make this a calendar node instead | |||
| calendarsNode.Nodes.Add(calendarName); | |||
| } | |||
| } | |||
| private void loadStuckTriggers(SchedulerNode schedulerNode) | |||
| { | |||
| TreeNode jobGroupsNode = schedulerNode.Nodes.Add("Stuck Triggers"); | |||
| } | |||
| private void loadOrphanJobs(SchedulerNode schedulerNode) | |||
| { | |||
| TreeNode orphanJobsNode = schedulerNode.Nodes.Add("Orphan Jobs"); | |||
| var groupNames = schedulerNode.Scheduler.GetScheduler().GetJobGroupNames(); | |||
| foreach (var jobGroupName in groupNames) | |||
| { | |||
| var matcher = GroupMatcher<JobKey>.GroupEquals(jobGroupName); | |||
| var jobKeys = schedulerNode.Scheduler.GetScheduler().GetJobKeys(matcher); | |||
| foreach (var jobKey in jobKeys) | |||
| { | |||
| try | |||
| { | |||
| var triggers = schedulerNode.Scheduler.GetScheduler().GetTriggersOfJob(jobKey); | |||
| if (triggers.Count == 0) | |||
| { | |||
| orphanJobsNode.Nodes.Add( | |||
| new JobNode(schedulerNode.Scheduler.GetScheduler().GetJobDetail(jobKey))); | |||
| } | |||
| } | |||
| catch (Exception ex) | |||
| { | |||
| _Log.Error("Error loading orphan jobs.", ex); | |||
| schedulerNode.Nodes.Add(string.Format("Unable to add job {0})", jobKey.Name)); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| private void jobDetailsToggle(bool isVisible) | |||
| { | |||
| if (isVisible == false) | |||
| { | |||
| pnlDetails.Controls.Clear(); | |||
| } | |||
| } | |||
| void jobGroupsTreeView_MouseDown(object sender, MouseEventArgs e) | |||
| { | |||
| if (e.Button == MouseButtons.Right) | |||
| { | |||
| TreeNode node = jobGroupsTreeView.GetNodeAt(e.X, e.Y); | |||
| if (node != null) | |||
| { | |||
| jobGroupsTreeView.SelectedNode = node; | |||
| ctxScheduler.Show(jobGroupsTreeView, e.Location); | |||
| } | |||
| } | |||
| } | |||
| private void addJobNodes(TreeNode node) | |||
| { | |||
| string group = node.Parent.Text; | |||
| var groupMatcher = GroupMatcher<JobKey>.GroupContains(group); | |||
| QuartzScheduler scheduler = getScheduler(node); | |||
| var jobKeys = scheduler.GetScheduler().GetJobKeys(groupMatcher); | |||
| foreach (var jobKey in jobKeys) | |||
| { | |||
| try | |||
| { | |||
| IJobDetail detail = scheduler.GetScheduler().GetJobDetail(jobKey); | |||
| JobNode jobNode = new JobNode(detail); | |||
| node.Nodes.Add(jobNode); | |||
| addTriggerNodes(jobNode); | |||
| } | |||
| catch (Exception ex) | |||
| { | |||
| node.Nodes.Add(string.Format("Unknown Job Type ({0})", jobKey.Name)); | |||
| //TODO: Do something useful with this exception. Most likely cause is the client does not have a copy of a given dll and can't load the type. | |||
| _Log.Error("Error loading jobs.", ex); | |||
| } | |||
| } | |||
| } | |||
| private void addTriggerNodes(TreeNode treeNode) | |||
| { | |||
| QuartzScheduler scheduler = getScheduler(treeNode); | |||
| var triggers = scheduler.GetScheduler().GetTriggersOfJob(new JobKey(treeNode.Text, treeNode.Parent.Parent.Text)); | |||
| TreeNode triggersNode = treeNode.Nodes.Add("Triggers"); | |||
| foreach (var trigger in triggers) | |||
| { | |||
| TriggerNode node = new TriggerNode(trigger); | |||
| triggersNode.Nodes.Add(node); | |||
| addCalendarNode(node); | |||
| } | |||
| } | |||
| private void addCalendarNode(TriggerNode node) | |||
| { | |||
| if (node.Trigger.CalendarName != null) | |||
| { | |||
| //TODO: Convert this to a CalendarNode and implement CalendarDisplay controls | |||
| node.Nodes.Add(node.Trigger.CalendarName); | |||
| } | |||
| else | |||
| { | |||
| node.Nodes.Add("No calendar found"); | |||
| } | |||
| } | |||
| private void updateRunningJobs() | |||
| { | |||
| try | |||
| { | |||
| this.Cursor = Cursors.WaitCursor; | |||
| timer_Refresh_Running_Jobs.Stop(); | |||
| listView_RunningJobs.Items.Clear(); | |||
| foreach (var quartzScheduler in getAllSchedulers()) | |||
| { | |||
| DataTable table = quartzScheduler.GetRunningJobs(); | |||
| foreach (DataRow row in table.Rows) | |||
| { | |||
| ListViewItem item = | |||
| new ListViewItem(new string[] { Convert.ToString(row["JobName"]), Convert.ToString(row["Runtime"]) }); | |||
| listView_RunningJobs.Items.Add(item); | |||
| } | |||
| } | |||
| StripStatusLabel_Jobs_Refresh_date.Text = DateTime.Now.ToString("yyyy.MM.dd HH:mm.ss"); | |||
| int timer_was = timer_Refresh_Running_Jobs.Interval; | |||
| timer_Refresh_Running_Jobs.Interval = timer_was + 1; | |||
| timer_Refresh_Running_Jobs.Interval = timer_was; | |||
| timer_Refresh_Running_Jobs.Start(); | |||
| } | |||
| catch (Exception ex) | |||
| { | |||
| _Log.Error("Unable to load running jobs", ex); | |||
| } | |||
| finally | |||
| { | |||
| this.Cursor = Cursors.Default; | |||
| } | |||
| } | |||
| private List<QuartzScheduler> getAllSchedulers() | |||
| { | |||
| List<QuartzScheduler> schedulers = new List<QuartzScheduler>(); | |||
| foreach (var node in jobGroupsTreeView.Nodes) | |||
| { | |||
| schedulers.Add(((SchedulerNode)node).Scheduler); | |||
| } | |||
| return schedulers; | |||
| } | |||
| private void addJobToolStripMenuItem_Click(object sender, EventArgs e) | |||
| { | |||
| AddJobForm form = new AddJobForm(); | |||
| form.ShowDialog(); | |||
| if (form.JobDetail != null && form.Trigger != null) | |||
| { | |||
| QuartzScheduler scheduler = getSelectedScheduler(); | |||
| scheduler.GetScheduler().ScheduleJob(form.JobDetail, form.Trigger); | |||
| loadJobGroups(scheduler); | |||
| } | |||
| } | |||
| private QuartzScheduler getSelectedScheduler() | |||
| { | |||
| TreeNode node = jobGroupsTreeView.SelectedNode; | |||
| return getScheduler(node); | |||
| } | |||
| private void btnRefreshRunningJobs_Click(object sender, EventArgs e) | |||
| { | |||
| updateRunningJobs(); | |||
| } | |||
| private void btnRefreshJobGroups_Click(object sender, EventArgs e) | |||
| { | |||
| List<QuartzScheduler> schedulers = getAllSchedulers(); | |||
| foreach (var quartzScheduler in schedulers) | |||
| { | |||
| loadJobGroups(quartzScheduler); | |||
| } | |||
| } | |||
| private void btnRunJobNow_Click(object sender, EventArgs e) | |||
| { | |||
| JobNode node = (JobNode)jobGroupsTreeView.SelectedNode; | |||
| QuartzScheduler scheduler = getScheduler(node); | |||
| scheduler.GetScheduler().TriggerJob(node.Detail.Key); | |||
| } | |||
| private void btnDeleteJob_Click(object sender, EventArgs e) | |||
| { | |||
| TreeNode selectedNode = jobGroupsTreeView.SelectedNode; | |||
| if (selectedNode is JobNode) | |||
| { | |||
| JobNode node = (JobNode)jobGroupsTreeView.SelectedNode; | |||
| QuartzScheduler scheduler = getScheduler(selectedNode); | |||
| scheduler.GetScheduler().DeleteJob(node.Detail.Key); | |||
| jobGroupsTreeView.SelectedNode.Remove(); | |||
| } | |||
| if (selectedNode is TriggerNode) | |||
| { | |||
| QuartzScheduler scheduler = getScheduler(selectedNode); | |||
| scheduler.GetScheduler().UnscheduleJob(((TriggerNode)selectedNode).Trigger.Key); | |||
| } | |||
| } | |||
| private void btnPause_Click(object sender, EventArgs e) | |||
| { | |||
| TriggerNode node = (TriggerNode)jobGroupsTreeView.SelectedNode; | |||
| QuartzScheduler scheduler = getScheduler(node); | |||
| if (scheduler.GetScheduler().GetTriggerState(node.Trigger.Key) == TriggerState.Paused) | |||
| { | |||
| scheduler.GetScheduler().ResumeTrigger(node.Trigger.Key); | |||
| } | |||
| else | |||
| { | |||
| scheduler.GetScheduler().PauseTrigger(node.Trigger.Key); | |||
| } | |||
| setPauseButtonText(); | |||
| } | |||
| private QuartzScheduler getScheduler(TreeNode node) | |||
| { | |||
| if (node is SchedulerNode) | |||
| { | |||
| return ((SchedulerNode)node).Scheduler; | |||
| } | |||
| return getScheduler(node.Parent); | |||
| } | |||
| private void btnEdit_Click(object sender, EventArgs e) | |||
| { | |||
| TriggerNode node = (TriggerNode)jobGroupsTreeView.SelectedNode; | |||
| QuartzScheduler scheduler = getScheduler(node); | |||
| AddJobForm form = new AddJobForm(node); | |||
| form.ShowDialog(); | |||
| if (form.JobDetail != null && form.Trigger != null) | |||
| { | |||
| scheduler.GetScheduler().RescheduleJob(node.Trigger.Key, form.Trigger); | |||
| loadJobGroups(scheduler); | |||
| } | |||
| } | |||
| private void backupToolStripMenuItem_Click(object sender, EventArgs e) | |||
| { | |||
| QuartzScheduler scheduler = ((SchedulerNode)((TreeView)((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl).SelectedNode).Scheduler; | |||
| FileDialog dialog = new SaveFileDialog(); | |||
| dialog.ShowDialog(); | |||
| FileInfo file = new FileInfo(dialog.FileName); | |||
| scheduler.BackupToFile(file); | |||
| } | |||
| private void timer_Refresh_Running_Jobs_Tick(object sender, EventArgs e) | |||
| { | |||
| updateRunningJobs(); | |||
| } | |||
| private void addAssemblyMenuItem_Click(object sender, EventArgs e) | |||
| { | |||
| FileDialog dialog = new OpenFileDialog(); | |||
| dialog.InitialDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); | |||
| dialog.Filter = "Assemblies (*.dll)|*.dll"; | |||
| dialog.ShowDialog(); | |||
| string fileName = Path.GetFileName(dialog.FileName); | |||
| AssemblyRepository.AddAssembly(fileName); | |||
| } | |||
| private void deleteAssemblyMenuItem_Click(object sender, EventArgs e) | |||
| { | |||
| using (DeleteAssembliesForm form = new DeleteAssembliesForm()) | |||
| { | |||
| form.ShowDialog(); | |||
| form.Close(); | |||
| } | |||
| } | |||
| private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | |||
| } | |||
| } | |||
| @@ -1,135 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <metadata name="mainMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
| <value>17, 17</value> | |||
| </metadata> | |||
| <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
| <value>143, 17</value> | |||
| </metadata> | |||
| <metadata name="ctxScheduler.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
| <value>259, 17</value> | |||
| </metadata> | |||
| <metadata name="timer_Refresh_Running_Jobs.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> | |||
| <value>374, 5</value> | |||
| </metadata> | |||
| <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||
| <value>25</value> | |||
| </metadata> | |||
| </root> | |||
| @@ -1,163 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class NativeJobDetailDisplay | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Component Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.lblName = new System.Windows.Forms.Label(); | |||
| this.label3 = new System.Windows.Forms.Label(); | |||
| this.lblGroup = new System.Windows.Forms.Label(); | |||
| this.label2 = new System.Windows.Forms.Label(); | |||
| this.lblDescription = new System.Windows.Forms.Label(); | |||
| this.label5 = new System.Windows.Forms.Label(); | |||
| this.label10 = new System.Windows.Forms.Label(); | |||
| this.jobDataListView = new System.Windows.Forms.ListView(); | |||
| this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); | |||
| this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // lblName | |||
| // | |||
| this.lblName.AutoSize = true; | |||
| this.lblName.Location = new System.Drawing.Point(121, 15); | |||
| this.lblName.Name = "lblName"; | |||
| this.lblName.Size = new System.Drawing.Size(35, 13); | |||
| this.lblName.TabIndex = 5; | |||
| this.lblName.Text = "label2"; | |||
| // | |||
| // label3 | |||
| // | |||
| this.label3.AutoSize = true; | |||
| this.label3.Location = new System.Drawing.Point(21, 15); | |||
| this.label3.Name = "label3"; | |||
| this.label3.Size = new System.Drawing.Size(38, 13); | |||
| this.label3.TabIndex = 4; | |||
| this.label3.Text = "Name:"; | |||
| // | |||
| // lblGroup | |||
| // | |||
| this.lblGroup.AutoSize = true; | |||
| this.lblGroup.Location = new System.Drawing.Point(121, 36); | |||
| this.lblGroup.Name = "lblGroup"; | |||
| this.lblGroup.Size = new System.Drawing.Size(35, 13); | |||
| this.lblGroup.TabIndex = 7; | |||
| this.lblGroup.Text = "label2"; | |||
| // | |||
| // label2 | |||
| // | |||
| this.label2.AutoSize = true; | |||
| this.label2.Location = new System.Drawing.Point(21, 36); | |||
| this.label2.Name = "label2"; | |||
| this.label2.Size = new System.Drawing.Size(39, 13); | |||
| this.label2.TabIndex = 6; | |||
| this.label2.Text = "Group:"; | |||
| // | |||
| // lblDescription | |||
| // | |||
| this.lblDescription.AutoSize = true; | |||
| this.lblDescription.Location = new System.Drawing.Point(121, 57); | |||
| this.lblDescription.Name = "lblDescription"; | |||
| this.lblDescription.Size = new System.Drawing.Size(35, 13); | |||
| this.lblDescription.TabIndex = 9; | |||
| this.lblDescription.Text = "label2"; | |||
| // | |||
| // label5 | |||
| // | |||
| this.label5.AutoSize = true; | |||
| this.label5.Location = new System.Drawing.Point(21, 57); | |||
| this.label5.Name = "label5"; | |||
| this.label5.Size = new System.Drawing.Size(63, 13); | |||
| this.label5.TabIndex = 8; | |||
| this.label5.Text = "Description:"; | |||
| // | |||
| // label10 | |||
| // | |||
| this.label10.AutoSize = true; | |||
| this.label10.Location = new System.Drawing.Point(21, 79); | |||
| this.label10.Name = "label10"; | |||
| this.label10.Size = new System.Drawing.Size(53, 13); | |||
| this.label10.TabIndex = 23; | |||
| this.label10.Text = "Job Data:"; | |||
| // | |||
| // jobDataListView | |||
| // | |||
| this.jobDataListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { | |||
| this.columnHeader1, | |||
| this.columnHeader2}); | |||
| this.jobDataListView.FullRowSelect = true; | |||
| this.jobDataListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; | |||
| this.jobDataListView.Location = new System.Drawing.Point(24, 105); | |||
| this.jobDataListView.MultiSelect = false; | |||
| this.jobDataListView.Name = "jobDataListView"; | |||
| this.jobDataListView.Size = new System.Drawing.Size(298, 142); | |||
| this.jobDataListView.TabIndex = 22; | |||
| this.jobDataListView.UseCompatibleStateImageBehavior = false; | |||
| this.jobDataListView.View = System.Windows.Forms.View.Details; | |||
| // | |||
| // columnHeader1 | |||
| // | |||
| this.columnHeader1.Text = "Key"; | |||
| this.columnHeader1.Width = 82; | |||
| // | |||
| // columnHeader2 | |||
| // | |||
| this.columnHeader2.Text = "Value"; | |||
| this.columnHeader2.Width = 145; | |||
| // | |||
| // NativeJobDetailDisplay | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.Controls.Add(this.label10); | |||
| this.Controls.Add(this.jobDataListView); | |||
| this.Controls.Add(this.lblDescription); | |||
| this.Controls.Add(this.label5); | |||
| this.Controls.Add(this.lblGroup); | |||
| this.Controls.Add(this.label2); | |||
| this.Controls.Add(this.lblName); | |||
| this.Controls.Add(this.label3); | |||
| this.Name = "NativeJobDetailDisplay"; | |||
| this.Size = new System.Drawing.Size(342, 273); | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.Label lblName; | |||
| private System.Windows.Forms.Label label3; | |||
| private System.Windows.Forms.Label lblGroup; | |||
| private System.Windows.Forms.Label label2; | |||
| private System.Windows.Forms.Label lblDescription; | |||
| private System.Windows.Forms.Label label5; | |||
| private System.Windows.Forms.Label label10; | |||
| private System.Windows.Forms.ListView jobDataListView; | |||
| private System.Windows.Forms.ColumnHeader columnHeader1; | |||
| private System.Windows.Forms.ColumnHeader columnHeader2; | |||
| } | |||
| } | |||
| @@ -1,45 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Drawing; | |||
| using System.Data; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Quartz; | |||
| using Quartz.Impl; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class NativeJobDetailDisplay : UserControl | |||
| { | |||
| public NativeJobDetailDisplay() | |||
| { | |||
| InitializeComponent(); | |||
| this.Load += new EventHandler(NativeJobDetailDisplay_Load); | |||
| } | |||
| void NativeJobDetailDisplay_Load(object sender, EventArgs e) | |||
| { | |||
| lblDescription.Text = _detail.Description; | |||
| lblGroup.Text = _detail.Key.Group; | |||
| lblName.Text = _detail.Key.Name; | |||
| loadJobDataMap(); | |||
| } | |||
| private void loadJobDataMap() | |||
| { | |||
| foreach (var item in _detail.JobDataMap.GetKeys()) | |||
| { | |||
| jobDataListView.Items.Add(new ListViewItem(new string[] { item, _detail.JobDataMap.Get(item).ToString() })); | |||
| } | |||
| } | |||
| public NativeJobDetailDisplay(IJobDetail detail) | |||
| : this() | |||
| { | |||
| _detail = detail; | |||
| } | |||
| private IJobDetail _detail; | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,21 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Windows.Forms; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| static class Program | |||
| { | |||
| /// <summary> | |||
| /// The main entry point for the application. | |||
| /// </summary> | |||
| [STAThread] | |||
| static void Main() | |||
| { | |||
| Application.EnableVisualStyles(); | |||
| Application.SetCompatibleTextRenderingDefault(false); | |||
| Application.Run(new MainForm()); | |||
| } | |||
| } | |||
| } | |||
| @@ -1,36 +0,0 @@ | |||
| using System.Reflection; | |||
| using System.Runtime.CompilerServices; | |||
| using System.Runtime.InteropServices; | |||
| // General Information about an assembly is controlled through the following | |||
| // set of attributes. Change these attribute values to modify the information | |||
| // associated with an assembly. | |||
| [assembly: AssemblyTitle("ClickForensics.Quartz.Manager")] | |||
| [assembly: AssemblyDescription("")] | |||
| [assembly: AssemblyConfiguration("")] | |||
| [assembly: AssemblyCompany("")] | |||
| [assembly: AssemblyProduct("ClickForensics.Quartz.Manager")] | |||
| [assembly: AssemblyCopyright("Copyright © 2009")] | |||
| [assembly: AssemblyTrademark("")] | |||
| [assembly: AssemblyCulture("")] | |||
| // Setting ComVisible to false makes the types in this assembly not visible | |||
| // to COM components. If you need to access a type in this assembly from | |||
| // COM, set the ComVisible attribute to true on that type. | |||
| [assembly: ComVisible(false)] | |||
| // The following GUID is for the ID of the typelib if this project is exposed to COM | |||
| [assembly: Guid("e3c9ecad-833f-427c-9354-8e487448d3ee")] | |||
| // Version information for an assembly consists of the following four values: | |||
| // | |||
| // Major Version | |||
| // Minor Version | |||
| // Build Number | |||
| // Revision | |||
| // | |||
| // You can specify all the values or you can default the Build and Revision Numbers | |||
| // by using the '*' as shown below: | |||
| // [assembly: AssemblyVersion("1.0.*")] | |||
| [assembly: AssemblyVersion("1.0.0.0")] | |||
| [assembly: AssemblyFileVersion("1.0.0.0")] | |||
| @@ -1,63 +0,0 @@ | |||
| //------------------------------------------------------------------------------ | |||
| // <auto-generated> | |||
| // This code was generated by a tool. | |||
| // Runtime Version:4.0.30319.1 | |||
| // | |||
| // Changes to this file may cause incorrect behavior and will be lost if | |||
| // the code is regenerated. | |||
| // </auto-generated> | |||
| //------------------------------------------------------------------------------ | |||
| namespace ClickForensics.Quartz.Manager.Properties { | |||
| using System; | |||
| /// <summary> | |||
| /// A strongly-typed resource class, for looking up localized strings, etc. | |||
| /// </summary> | |||
| // This class was auto-generated by the StronglyTypedResourceBuilder | |||
| // class via a tool like ResGen or Visual Studio. | |||
| // To add or remove a member, edit your .ResX file then rerun ResGen | |||
| // with the /str option, or rebuild your VS project. | |||
| [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] | |||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||
| [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||
| internal class Resources { | |||
| private static global::System.Resources.ResourceManager resourceMan; | |||
| private static global::System.Globalization.CultureInfo resourceCulture; | |||
| [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||
| internal Resources() { | |||
| } | |||
| /// <summary> | |||
| /// Returns the cached ResourceManager instance used by this class. | |||
| /// </summary> | |||
| [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||
| internal static global::System.Resources.ResourceManager ResourceManager { | |||
| get { | |||
| if (object.ReferenceEquals(resourceMan, null)) { | |||
| global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClickForensics.Quartz.Manager.Properties.Resources", typeof(Resources).Assembly); | |||
| resourceMan = temp; | |||
| } | |||
| return resourceMan; | |||
| } | |||
| } | |||
| /// <summary> | |||
| /// Overrides the current thread's CurrentUICulture property for all | |||
| /// resource lookups using this strongly typed resource class. | |||
| /// </summary> | |||
| [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||
| internal static global::System.Globalization.CultureInfo Culture { | |||
| get { | |||
| return resourceCulture; | |||
| } | |||
| set { | |||
| resourceCulture = value; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,117 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,26 +0,0 @@ | |||
| //------------------------------------------------------------------------------ | |||
| // <auto-generated> | |||
| // This code was generated by a tool. | |||
| // Runtime Version:4.0.30319.1 | |||
| // | |||
| // Changes to this file may cause incorrect behavior and will be lost if | |||
| // the code is regenerated. | |||
| // </auto-generated> | |||
| //------------------------------------------------------------------------------ | |||
| namespace ClickForensics.Quartz.Manager.Properties { | |||
| [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||
| [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] | |||
| internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { | |||
| private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | |||
| public static Settings Default { | |||
| get { | |||
| return defaultInstance; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1,7 +0,0 @@ | |||
| <?xml version='1.0' encoding='utf-8'?> | |||
| <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> | |||
| <Profiles> | |||
| <Profile Name="(Default)" /> | |||
| </Profiles> | |||
| <Settings /> | |||
| </SettingsFile> | |||
| @@ -1,318 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Web; | |||
| using System.Collections.Specialized; | |||
| using Quartz.Impl; | |||
| using Quartz; | |||
| using System.Data; | |||
| using System.Configuration; | |||
| using System.Collections; | |||
| using System.Windows.Forms; | |||
| using System.IO; | |||
| using System.Xml.Linq; | |||
| using Quartz.Impl.Matchers; | |||
| using Quartz.Impl.Triggers; | |||
| 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)); | |||
| 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<JobKey>.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); | |||
| } | |||
| table.Rows.Add(row); | |||
| } | |||
| } | |||
| } | |||
| return table; | |||
| } | |||
| private ISchedulerFactory _schedulerFactory; | |||
| private IScheduler _scheduler; | |||
| 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); | |||
| } | |||
| 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; | |||
| } | |||
| public void BackupToFile(System.IO.FileInfo file) | |||
| { | |||
| IScheduler scheduler = GetScheduler(); | |||
| var jobGroupNames = scheduler.GetJobGroupNames(); | |||
| List<IJobDetail> jobDetails = new List<IJobDetail>(); | |||
| foreach (var jobGroup in jobGroupNames) | |||
| { | |||
| var groupMatcher = GroupMatcher<JobKey>.GroupContains(jobGroup); | |||
| 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<IJobDetail> 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]) | |||
| ) | |||
| ); | |||
| } | |||
| 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 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 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 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; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,75 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using Microsoft.Win32; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public class RegistryStore | |||
| { | |||
| public static List<ConnectionInfo> GetLastConnections() | |||
| { | |||
| List<ConnectionInfo> lastConnections = new List<ConnectionInfo>(); | |||
| RegistryKey managerKey = Registry.CurrentUser.CreateSubKey("QuartzNetManager"); | |||
| RegistryKey key = null; | |||
| if (managerKey == null) | |||
| { | |||
| return lastConnections; | |||
| } | |||
| key = managerKey.CreateSubKey("MRUList"); | |||
| if (key == null) | |||
| { | |||
| return lastConnections; | |||
| } | |||
| //TODO: show more than one server in dropdown | |||
| for (int i = 0; i < 1; i++) | |||
| { | |||
| ConnectionInfo info = ConnectionInfo.Parse((key.GetValue(string.Format("connection{0}", i), null) as string)); | |||
| if (info != null) | |||
| { | |||
| lastConnections.Add(info); | |||
| } | |||
| } | |||
| key.Close(); | |||
| managerKey.Close(); | |||
| return lastConnections; | |||
| } | |||
| public static void AddConnection(ConnectionInfo info) | |||
| { | |||
| RegistryKey managerKey = Registry.CurrentUser.CreateSubKey("QuartzNetManager"); | |||
| RegistryKey key = null; | |||
| if (managerKey == null) | |||
| { | |||
| return; | |||
| } | |||
| key = managerKey.CreateSubKey("MRUList"); | |||
| if (key == null) | |||
| { | |||
| return; | |||
| } | |||
| //TODO: check that the key doesn't exist before trying to add. if it exists, move it to the top, but don't add it | |||
| //for (int i = 4; i > 0; i--) | |||
| //{ | |||
| // var previous = key.GetValue(string.Format("connection{0}", i - 1), null); | |||
| // if (previous != null) | |||
| // { | |||
| // key.SetValue(string.Format("connection{0}", i), previous); | |||
| // } | |||
| //} | |||
| key.SetValue("connection0", info, RegistryValueKind.String); | |||
| } | |||
| private static object lockObject = new object(); | |||
| } | |||
| } | |||
| @@ -1,20 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public class SchedulerNode : TreeNode | |||
| { | |||
| public SchedulerNode(QuartzScheduler scheduler) | |||
| : base() | |||
| { | |||
| this.Text = scheduler.Address; | |||
| Scheduler = scheduler; | |||
| } | |||
| public QuartzScheduler Scheduler { get; private set; } | |||
| } | |||
| } | |||
| @@ -1,148 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class ServerConnectForm | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Windows Form Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.btnConnect = new System.Windows.Forms.Button(); | |||
| this.btnCancel = new System.Windows.Forms.Button(); | |||
| this.label1 = new System.Windows.Forms.Label(); | |||
| this.txtPort = new System.Windows.Forms.TextBox(); | |||
| this.label2 = new System.Windows.Forms.Label(); | |||
| this.txtScheduler = new System.Windows.Forms.TextBox(); | |||
| this.label3 = new System.Windows.Forms.Label(); | |||
| this.cboServer = new System.Windows.Forms.ComboBox(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // btnConnect | |||
| // | |||
| this.btnConnect.Location = new System.Drawing.Point(32, 87); | |||
| this.btnConnect.Name = "btnConnect"; | |||
| this.btnConnect.Size = new System.Drawing.Size(75, 23); | |||
| this.btnConnect.TabIndex = 3; | |||
| this.btnConnect.Text = "Connect"; | |||
| this.btnConnect.UseVisualStyleBackColor = true; | |||
| this.btnConnect.Click += new System.EventHandler(this.btnConnect_Click); | |||
| // | |||
| // btnCancel | |||
| // | |||
| this.btnCancel.Location = new System.Drawing.Point(115, 87); | |||
| this.btnCancel.Name = "btnCancel"; | |||
| this.btnCancel.Size = new System.Drawing.Size(75, 23); | |||
| this.btnCancel.TabIndex = 4; | |||
| this.btnCancel.Text = "Cancel"; | |||
| this.btnCancel.UseVisualStyleBackColor = true; | |||
| this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); | |||
| // | |||
| // label1 | |||
| // | |||
| this.label1.AutoSize = true; | |||
| this.label1.Location = new System.Drawing.Point(29, 12); | |||
| this.label1.Name = "label1"; | |||
| this.label1.Size = new System.Drawing.Size(41, 13); | |||
| this.label1.TabIndex = 2; | |||
| this.label1.Text = "Server:"; | |||
| // | |||
| // txtPort | |||
| // | |||
| this.txtPort.Location = new System.Drawing.Point(90, 35); | |||
| this.txtPort.Name = "txtPort"; | |||
| this.txtPort.Size = new System.Drawing.Size(100, 20); | |||
| this.txtPort.TabIndex = 1; | |||
| this.txtPort.Text = "555"; | |||
| // | |||
| // label2 | |||
| // | |||
| this.label2.AutoSize = true; | |||
| this.label2.Location = new System.Drawing.Point(29, 38); | |||
| this.label2.Name = "label2"; | |||
| this.label2.Size = new System.Drawing.Size(29, 13); | |||
| this.label2.TabIndex = 8; | |||
| this.label2.Text = "Port:"; | |||
| // | |||
| // txtScheduler | |||
| // | |||
| this.txtScheduler.Location = new System.Drawing.Point(90, 61); | |||
| this.txtScheduler.Name = "txtScheduler"; | |||
| this.txtScheduler.Size = new System.Drawing.Size(100, 20); | |||
| this.txtScheduler.TabIndex = 2; | |||
| this.txtScheduler.Text = "QuartzScheduler"; | |||
| // | |||
| // label3 | |||
| // | |||
| this.label3.AutoSize = true; | |||
| this.label3.Location = new System.Drawing.Point(29, 64); | |||
| this.label3.Name = "label3"; | |||
| this.label3.Size = new System.Drawing.Size(55, 13); | |||
| this.label3.TabIndex = 10; | |||
| this.label3.Text = "Scheduler"; | |||
| // | |||
| // cboServer | |||
| // | |||
| this.cboServer.FormattingEnabled = true; | |||
| this.cboServer.Location = new System.Drawing.Point(90, 8); | |||
| this.cboServer.Name = "cboServer"; | |||
| this.cboServer.Size = new System.Drawing.Size(100, 21); | |||
| this.cboServer.TabIndex = 1; | |||
| this.cboServer.SelectedIndexChanged += new System.EventHandler(cboServer_SelectedIndexChanged); | |||
| // | |||
| // ServerConnectForm | |||
| // | |||
| this.AcceptButton = this.btnConnect; | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.ClientSize = new System.Drawing.Size(227, 141); | |||
| this.Controls.Add(this.cboServer); | |||
| this.Controls.Add(this.txtScheduler); | |||
| this.Controls.Add(this.label3); | |||
| this.Controls.Add(this.txtPort); | |||
| this.Controls.Add(this.label2); | |||
| this.Controls.Add(this.label1); | |||
| this.Controls.Add(this.btnCancel); | |||
| this.Controls.Add(this.btnConnect); | |||
| this.Name = "ServerConnectForm"; | |||
| this.Text = "ServerConnectForm"; | |||
| this.Load += new System.EventHandler(this.ServerConnectForm_Load); | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.Button btnConnect; | |||
| private System.Windows.Forms.Button btnCancel; | |||
| private System.Windows.Forms.Label label1; | |||
| private System.Windows.Forms.TextBox txtPort; | |||
| private System.Windows.Forms.Label label2; | |||
| private System.Windows.Forms.TextBox txtScheduler; | |||
| private System.Windows.Forms.Label label3; | |||
| private System.Windows.Forms.ComboBox cboServer; | |||
| } | |||
| } | |||
| @@ -1,51 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Data; | |||
| using System.Drawing; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class ServerConnectForm : Form | |||
| { | |||
| public ServerConnectForm() | |||
| { | |||
| InitializeComponent(); | |||
| cboServer.DataSource = RegistryStore.GetLastConnections(); | |||
| cboServer.DisplayMember = "ServerName"; | |||
| } | |||
| private void btnCancel_Click(object sender, EventArgs e) | |||
| { | |||
| this.Close(); | |||
| } | |||
| private void btnConnect_Click(object sender, EventArgs e) | |||
| { | |||
| Cancelled = false; | |||
| Server = cboServer.Text; | |||
| Port = int.Parse(txtPort.Text); | |||
| Scheduler = txtScheduler.Text; | |||
| RegistryStore.AddConnection(new ConnectionInfo { ServerName = Server, Port = Port, SchedulerName = Scheduler }); | |||
| this.Close(); | |||
| } | |||
| public string Server { get; set; } | |||
| public int Port { get; set; } | |||
| public string Scheduler { get; set; } | |||
| public bool Cancelled { get; set; } | |||
| private void ServerConnectForm_Load(object sender, EventArgs e) | |||
| { | |||
| Cancelled = true; | |||
| } | |||
| private void cboServer_SelectedIndexChanged(object sender, System.EventArgs e) | |||
| { | |||
| //TODO: Implement this | |||
| } | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,215 +0,0 @@ | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| partial class SimpleTriggerDisplay | |||
| { | |||
| /// <summary> | |||
| /// Required designer variable. | |||
| /// </summary> | |||
| private System.ComponentModel.IContainer components = null; | |||
| /// <summary> | |||
| /// Clean up any resources being used. | |||
| /// </summary> | |||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
| protected override void Dispose(bool disposing) | |||
| { | |||
| if (disposing && (components != null)) | |||
| { | |||
| components.Dispose(); | |||
| } | |||
| base.Dispose(disposing); | |||
| } | |||
| #region Component Designer generated code | |||
| /// <summary> | |||
| /// Required method for Designer support - do not modify | |||
| /// the contents of this method with the code editor. | |||
| /// </summary> | |||
| private void InitializeComponent() | |||
| { | |||
| this.lblName = new System.Windows.Forms.Label(); | |||
| this.label3 = new System.Windows.Forms.Label(); | |||
| this.lblGroup = new System.Windows.Forms.Label(); | |||
| this.label5 = new System.Windows.Forms.Label(); | |||
| this.lblDescription = new System.Windows.Forms.Label(); | |||
| this.label7 = new System.Windows.Forms.Label(); | |||
| this.lblPreviousFireTime = new System.Windows.Forms.Label(); | |||
| this.label9 = new System.Windows.Forms.Label(); | |||
| this.lblNextFireTime = new System.Windows.Forms.Label(); | |||
| this.label11 = new System.Windows.Forms.Label(); | |||
| this.lblRepeatCount = new System.Windows.Forms.Label(); | |||
| this.label2 = new System.Windows.Forms.Label(); | |||
| this.lblRepeatInterval = new System.Windows.Forms.Label(); | |||
| this.label6 = new System.Windows.Forms.Label(); | |||
| this.SuspendLayout(); | |||
| // | |||
| // lblName | |||
| // | |||
| this.lblName.AutoSize = true; | |||
| this.lblName.Location = new System.Drawing.Point(116, 15); | |||
| this.lblName.Name = "lblName"; | |||
| this.lblName.Size = new System.Drawing.Size(35, 13); | |||
| this.lblName.TabIndex = 3; | |||
| this.lblName.Text = "label2"; | |||
| // | |||
| // label3 | |||
| // | |||
| this.label3.AutoSize = true; | |||
| this.label3.Location = new System.Drawing.Point(14, 15); | |||
| this.label3.Name = "label3"; | |||
| this.label3.Size = new System.Drawing.Size(38, 13); | |||
| this.label3.TabIndex = 2; | |||
| this.label3.Text = "Name:"; | |||
| // | |||
| // lblGroup | |||
| // | |||
| this.lblGroup.AutoSize = true; | |||
| this.lblGroup.Location = new System.Drawing.Point(116, 36); | |||
| this.lblGroup.Name = "lblGroup"; | |||
| this.lblGroup.Size = new System.Drawing.Size(35, 13); | |||
| this.lblGroup.TabIndex = 5; | |||
| this.lblGroup.Text = "label4"; | |||
| // | |||
| // label5 | |||
| // | |||
| this.label5.AutoSize = true; | |||
| this.label5.Location = new System.Drawing.Point(14, 36); | |||
| this.label5.Name = "label5"; | |||
| this.label5.Size = new System.Drawing.Size(39, 13); | |||
| this.label5.TabIndex = 4; | |||
| this.label5.Text = "Group:"; | |||
| // | |||
| // lblDescription | |||
| // | |||
| this.lblDescription.AutoSize = true; | |||
| this.lblDescription.Location = new System.Drawing.Point(116, 57); | |||
| this.lblDescription.Name = "lblDescription"; | |||
| this.lblDescription.Size = new System.Drawing.Size(35, 13); | |||
| this.lblDescription.TabIndex = 7; | |||
| this.lblDescription.Text = "label6"; | |||
| // | |||
| // label7 | |||
| // | |||
| this.label7.AutoSize = true; | |||
| this.label7.Location = new System.Drawing.Point(14, 57); | |||
| this.label7.Name = "label7"; | |||
| this.label7.Size = new System.Drawing.Size(63, 13); | |||
| this.label7.TabIndex = 6; | |||
| this.label7.Text = "Description:"; | |||
| // | |||
| // lblPreviousFireTime | |||
| // | |||
| this.lblPreviousFireTime.AutoSize = true; | |||
| this.lblPreviousFireTime.Location = new System.Drawing.Point(116, 99); | |||
| this.lblPreviousFireTime.Name = "lblPreviousFireTime"; | |||
| this.lblPreviousFireTime.Size = new System.Drawing.Size(35, 13); | |||
| this.lblPreviousFireTime.TabIndex = 9; | |||
| this.lblPreviousFireTime.Text = "label8"; | |||
| // | |||
| // label9 | |||
| // | |||
| this.label9.AutoSize = true; | |||
| this.label9.Location = new System.Drawing.Point(14, 99); | |||
| this.label9.Name = "label9"; | |||
| this.label9.Size = new System.Drawing.Size(97, 13); | |||
| this.label9.TabIndex = 8; | |||
| this.label9.Text = "Previous Fire Time:"; | |||
| // | |||
| // lblNextFireTime | |||
| // | |||
| this.lblNextFireTime.AutoSize = true; | |||
| this.lblNextFireTime.Location = new System.Drawing.Point(116, 78); | |||
| this.lblNextFireTime.Name = "lblNextFireTime"; | |||
| this.lblNextFireTime.Size = new System.Drawing.Size(41, 13); | |||
| this.lblNextFireTime.TabIndex = 11; | |||
| this.lblNextFireTime.Text = "label10"; | |||
| // | |||
| // label11 | |||
| // | |||
| this.label11.AutoSize = true; | |||
| this.label11.Location = new System.Drawing.Point(14, 78); | |||
| this.label11.Name = "label11"; | |||
| this.label11.Size = new System.Drawing.Size(78, 13); | |||
| this.label11.TabIndex = 10; | |||
| this.label11.Text = "Next Fire Time:"; | |||
| // | |||
| // lblRepeatCount | |||
| // | |||
| this.lblRepeatCount.AutoSize = true; | |||
| this.lblRepeatCount.Location = new System.Drawing.Point(116, 121); | |||
| this.lblRepeatCount.Name = "lblRepeatCount"; | |||
| this.lblRepeatCount.Size = new System.Drawing.Size(35, 13); | |||
| this.lblRepeatCount.TabIndex = 13; | |||
| this.lblRepeatCount.Text = "label8"; | |||
| // | |||
| // label2 | |||
| // | |||
| this.label2.AutoSize = true; | |||
| this.label2.Location = new System.Drawing.Point(14, 121); | |||
| this.label2.Name = "label2"; | |||
| this.label2.Size = new System.Drawing.Size(76, 13); | |||
| this.label2.TabIndex = 12; | |||
| this.label2.Text = "Repeat Count:"; | |||
| // | |||
| // lblRepeatInterval | |||
| // | |||
| this.lblRepeatInterval.AutoSize = true; | |||
| this.lblRepeatInterval.Location = new System.Drawing.Point(116, 144); | |||
| this.lblRepeatInterval.Name = "lblRepeatInterval"; | |||
| this.lblRepeatInterval.Size = new System.Drawing.Size(35, 13); | |||
| this.lblRepeatInterval.TabIndex = 15; | |||
| this.lblRepeatInterval.Text = "label8"; | |||
| // | |||
| // label6 | |||
| // | |||
| this.label6.AutoSize = true; | |||
| this.label6.Location = new System.Drawing.Point(14, 144); | |||
| this.label6.Name = "label6"; | |||
| this.label6.Size = new System.Drawing.Size(83, 13); | |||
| this.label6.TabIndex = 14; | |||
| this.label6.Text = "Repeat Interval:"; | |||
| // | |||
| // SimpleTriggerDisplay | |||
| // | |||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); | |||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
| this.Controls.Add(this.lblRepeatInterval); | |||
| this.Controls.Add(this.label6); | |||
| this.Controls.Add(this.lblRepeatCount); | |||
| this.Controls.Add(this.label2); | |||
| this.Controls.Add(this.lblNextFireTime); | |||
| this.Controls.Add(this.label11); | |||
| this.Controls.Add(this.lblPreviousFireTime); | |||
| this.Controls.Add(this.label9); | |||
| this.Controls.Add(this.lblDescription); | |||
| this.Controls.Add(this.label7); | |||
| this.Controls.Add(this.lblGroup); | |||
| this.Controls.Add(this.label5); | |||
| this.Controls.Add(this.lblName); | |||
| this.Controls.Add(this.label3); | |||
| this.Name = "SimpleTriggerDisplay"; | |||
| this.Size = new System.Drawing.Size(324, 168); | |||
| this.ResumeLayout(false); | |||
| this.PerformLayout(); | |||
| } | |||
| #endregion | |||
| private System.Windows.Forms.Label lblName; | |||
| private System.Windows.Forms.Label label3; | |||
| private System.Windows.Forms.Label lblGroup; | |||
| private System.Windows.Forms.Label label5; | |||
| private System.Windows.Forms.Label lblDescription; | |||
| private System.Windows.Forms.Label label7; | |||
| private System.Windows.Forms.Label lblPreviousFireTime; | |||
| private System.Windows.Forms.Label label9; | |||
| private System.Windows.Forms.Label lblNextFireTime; | |||
| private System.Windows.Forms.Label label11; | |||
| private System.Windows.Forms.Label lblRepeatCount; | |||
| private System.Windows.Forms.Label label2; | |||
| private System.Windows.Forms.Label lblRepeatInterval; | |||
| private System.Windows.Forms.Label label6; | |||
| } | |||
| } | |||
| @@ -1,55 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.ComponentModel; | |||
| using System.Drawing; | |||
| using System.Data; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Quartz; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public partial class SimpleTriggerDisplay : UserControl | |||
| { | |||
| public SimpleTriggerDisplay() | |||
| { | |||
| InitializeComponent(); | |||
| this.Load += new EventHandler(SimpleTriggerDisplay_Load); | |||
| } | |||
| void SimpleTriggerDisplay_Load(object sender, EventArgs e) | |||
| { | |||
| lblDescription.Text = _trigger.Description; | |||
| lblGroup.Text = _trigger.Key.Group; | |||
| lblName.Text = _trigger.Key.Name; | |||
| if (_trigger.GetNextFireTimeUtc().HasValue) | |||
| { | |||
| lblNextFireTime.Text = _trigger.GetNextFireTimeUtc().Value.ToLocalTime().ToString(); | |||
| } | |||
| else | |||
| { | |||
| lblNextFireTime.Text = "Unknown"; | |||
| } | |||
| if (_trigger.GetPreviousFireTimeUtc().HasValue) | |||
| { | |||
| lblPreviousFireTime.Text = _trigger.GetPreviousFireTimeUtc().Value.ToLocalTime().ToString(); | |||
| } | |||
| else | |||
| { | |||
| lblPreviousFireTime.Text = "Unknown"; | |||
| } | |||
| lblRepeatCount.Text = _trigger.RepeatCount.ToString(); | |||
| lblRepeatInterval.Text = _trigger.RepeatInterval.ToString(); | |||
| } | |||
| public SimpleTriggerDisplay(ISimpleTrigger trigger) | |||
| : this() | |||
| { | |||
| _trigger = trigger; | |||
| } | |||
| private ISimpleTrigger _trigger; | |||
| } | |||
| } | |||
| @@ -1,120 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <root> | |||
| <!-- | |||
| Microsoft ResX Schema | |||
| Version 2.0 | |||
| The primary goals of this format is to allow a simple XML format | |||
| that is mostly human readable. The generation and parsing of the | |||
| various data types are done through the TypeConverter classes | |||
| associated with the data types. | |||
| Example: | |||
| ... ado.net/XML headers & schema ... | |||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||
| <resheader name="version">2.0</resheader> | |||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||
| </data> | |||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
| <comment>This is a comment</comment> | |||
| </data> | |||
| There are any number of "resheader" rows that contain simple | |||
| name/value pairs. | |||
| Each data row contains a name, and value. The row also contains a | |||
| type or mimetype. Type corresponds to a .NET class that support | |||
| text/value conversion through the TypeConverter architecture. | |||
| Classes that don't support this are serialized and stored with the | |||
| mimetype set. | |||
| The mimetype is used for serialized objects, and tells the | |||
| ResXResourceReader how to depersist the object. This is currently not | |||
| extensible. For a given mimetype the value must be set accordingly: | |||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||
| that the ResXResourceWriter will generate, however the reader can | |||
| read any of the formats listed below. | |||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||
| value : The object must be serialized with | |||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
| : and then encoded with base64 encoding. | |||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
| value : The object must be serialized into a byte array | |||
| : using a System.ComponentModel.TypeConverter | |||
| : and then encoded with base64 encoding. | |||
| --> | |||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||
| <xsd:complexType> | |||
| <xsd:choice maxOccurs="unbounded"> | |||
| <xsd:element name="metadata"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||
| <xsd:attribute name="type" type="xsd:string" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="assembly"> | |||
| <xsd:complexType> | |||
| <xsd:attribute name="alias" type="xsd:string" /> | |||
| <xsd:attribute name="name" type="xsd:string" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="data"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
| <xsd:attribute ref="xml:space" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| <xsd:element name="resheader"> | |||
| <xsd:complexType> | |||
| <xsd:sequence> | |||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
| </xsd:sequence> | |||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:choice> | |||
| </xsd:complexType> | |||
| </xsd:element> | |||
| </xsd:schema> | |||
| <resheader name="resmimetype"> | |||
| <value>text/microsoft-resx</value> | |||
| </resheader> | |||
| <resheader name="version"> | |||
| <value>2.0</value> | |||
| </resheader> | |||
| <resheader name="reader"> | |||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| <resheader name="writer"> | |||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
| </resheader> | |||
| </root> | |||
| @@ -1,21 +0,0 @@ | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Linq; | |||
| using System.Text; | |||
| using System.Windows.Forms; | |||
| using Quartz; | |||
| using Quartz.Impl.Triggers; | |||
| namespace ClickForensics.Quartz.Manager | |||
| { | |||
| public class TriggerNode : TreeNode | |||
| { | |||
| public TriggerNode(ITrigger trigger) | |||
| { | |||
| Text = trigger.Key.Name; | |||
| Trigger = trigger; | |||
| } | |||
| public ITrigger Trigger { get; set; } | |||
| } | |||
| } | |||
| @@ -1,16 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <configuration> | |||
| <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /></startup> | |||
| <runtime> | |||
| <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | |||
| <dependentAssembly> | |||
| <assemblyIdentity name="Common.Logging.Core" publicKeyToken="af08829b84f0328e" culture="neutral" /> | |||
| <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> | |||
| </dependentAssembly> | |||
| <dependentAssembly> | |||
| <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" /> | |||
| <bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /> | |||
| </dependentAssembly> | |||
| </assemblyBinding> | |||
| </runtime> | |||
| </configuration> | |||
| @@ -1,361 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
| xmlns="http://quartznet.sourceforge.net/JobSchedulingData" | |||
| targetNamespace="http://quartznet.sourceforge.net/JobSchedulingData" | |||
| elementFormDefault="qualified" | |||
| version="2.0"> | |||
| <xs:element name="job-scheduling-data"> | |||
| <xs:annotation> | |||
| <xs:documentation>Root level node</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexType> | |||
| <xs:sequence maxOccurs="unbounded"> | |||
| <xs:element name="pre-processing-commands" type="pre-processing-commandsType" minOccurs="0" maxOccurs="1"> | |||
| <xs:annotation> | |||
| <xs:documentation>Commands to be executed before scheduling the jobs and triggers in this file.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="processing-directives" type="processing-directivesType" minOccurs="0" maxOccurs="1"> | |||
| <xs:annotation> | |||
| <xs:documentation>Directives to be followed while scheduling the jobs and triggers in this file.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="schedule" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:complexType> | |||
| <xs:sequence maxOccurs="unbounded"> | |||
| <xs:element name="job" type="job-detailType" minOccurs="0" maxOccurs="unbounded" /> | |||
| <xs:element name="trigger" type="triggerType" minOccurs="0" maxOccurs="unbounded" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| </xs:sequence> | |||
| <xs:attribute name="version" type="xs:string"> | |||
| <xs:annotation> | |||
| <xs:documentation>Version of the XML Schema instance</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:attribute> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| <xs:complexType name="pre-processing-commandsType"> | |||
| <xs:sequence maxOccurs="unbounded"> | |||
| <xs:element name="delete-jobs-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete all jobs, if any, in the identified group. "*" can be used to identify all groups. Will also result in deleting all triggers related to the jobs.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="delete-triggers-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete all triggers, if any, in the identified group. "*" can be used to identify all groups. Will also result in deletion of related jobs that are non-durable.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="delete-job" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete the identified job if it exists (will also result in deleting all triggers related to it).</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexType> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| <xs:element name="delete-trigger" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete the identified trigger if it exists (will also result in deletion of related jobs that are non-durable).</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexType> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="processing-directivesType"> | |||
| <xs:sequence> | |||
| <xs:element name="overwrite-existing-data" type="xs:boolean" minOccurs="0" default="true"> | |||
| <xs:annotation> | |||
| <xs:documentation>Whether the existing scheduling data (with same identifiers) will be overwritten. If false, and ignore-duplicates is not false, and jobs or triggers with the same names already exist as those in the file, an error will occur.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="ignore-duplicates" type="xs:boolean" minOccurs="0" default="false"> | |||
| <xs:annotation> | |||
| <xs:documentation>If true (and overwrite-existing-data is false) then any job/triggers encountered in this file that have names that already exist in the scheduler will be ignored, and no error will be produced.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="schedule-trigger-relative-to-replaced-trigger" type="xs:boolean" minOccurs="0" default="false"> | |||
| <xs:annotation> | |||
| <xs:documentation>If true trigger's start time is calculated based on earlier run time instead of fixed value. Trigger's start time must be undefined for this to work.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="job-detailType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a JobDetail</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="job-type" type="xs:string" /> | |||
| <xs:sequence minOccurs="0"> | |||
| <xs:element name="durable" type="xs:boolean" /> | |||
| <xs:element name="recover" type="xs:boolean" /> | |||
| </xs:sequence> | |||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="job-data-mapType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a JobDataMap</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:element name="entry" type="entryType" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="entryType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a JobDataMap entry</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence> | |||
| <xs:element name="key" type="xs:string" /> | |||
| <xs:element name="value" type="xs:string" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="triggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a Trigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:choice> | |||
| <xs:element name="simple" type="simpleTriggerType" /> | |||
| <xs:element name="cron" type="cronTriggerType" /> | |||
| <xs:element name="calendar-interval" type="calendarIntervalTriggerType" /> | |||
| </xs:choice> | |||
| </xs:complexType> | |||
| <xs:complexType name="abstractTriggerType" abstract="true"> | |||
| <xs:annotation> | |||
| <xs:documentation>Common Trigger definitions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="job-name" type="xs:string" /> | |||
| <xs:element name="job-group" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="priority" type="xs:nonNegativeInteger" minOccurs="0" /> | |||
| <xs:element name="calendar-name" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||
| <xs:sequence minOccurs="0"> | |||
| <xs:choice> | |||
| <xs:element name="start-time" type="xs:dateTime" /> | |||
| <xs:element name="start-time-seconds-in-future" type="xs:nonNegativeInteger" /> | |||
| </xs:choice> | |||
| <xs:element name="end-time" type="xs:dateTime" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="simpleTriggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a SimpleTrigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexContent> | |||
| <xs:extension base="abstractTriggerType"> | |||
| <xs:sequence> | |||
| <xs:element name="misfire-instruction" type="simple-trigger-misfire-instructionType" minOccurs="0" /> | |||
| <xs:sequence minOccurs="0"> | |||
| <xs:element name="repeat-count" type="repeat-countType" /> | |||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||
| </xs:sequence> | |||
| </xs:sequence> | |||
| </xs:extension> | |||
| </xs:complexContent> | |||
| </xs:complexType> | |||
| <xs:complexType name="cronTriggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a CronTrigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexContent> | |||
| <xs:extension base="abstractTriggerType"> | |||
| <xs:sequence> | |||
| <xs:element name="misfire-instruction" type="cron-trigger-misfire-instructionType" minOccurs="0" /> | |||
| <xs:element name="cron-expression" type="cron-expressionType" /> | |||
| <xs:element name="time-zone" type="xs:string" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:extension> | |||
| </xs:complexContent> | |||
| </xs:complexType> | |||
| <xs:complexType name="calendarIntervalTriggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a DateIntervalTrigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexContent> | |||
| <xs:extension base="abstractTriggerType"> | |||
| <xs:sequence> | |||
| <xs:element name="misfire-instruction" type="date-interval-trigger-misfire-instructionType" minOccurs="0" /> | |||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||
| <xs:element name="repeat-interval-unit" type="interval-unitType" /> | |||
| </xs:sequence> | |||
| </xs:extension> | |||
| </xs:complexContent> | |||
| </xs:complexType> | |||
| <xs:simpleType name="cron-expressionType"> | |||
| <xs:annotation> | |||
| <xs:documentation> | |||
| Cron expression (see JavaDoc for examples) | |||
| Special thanks to Chris Thatcher (thatcher@butterfly.net) for the regular expression! | |||
| Regular expressions are not my strong point but I believe this is complete, | |||
| with the caveat that order for expressions like 3-0 is not legal but will pass, | |||
| and month and day names must be capitalized. | |||
| If you want to examine the correctness look for the [\s] to denote the | |||
| seperation of individual regular expressions. This is how I break them up visually | |||
| to examine them: | |||
| SECONDS: | |||
| ( | |||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) [\s] | |||
| MINUTES: | |||
| ( | |||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) [\s] | |||
| HOURS: | |||
| ( | |||
| ((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?) | |||
| | (([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3])) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) [\s] | |||
| DAY OF MONTH: | |||
| ( | |||
| ((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?) | |||
| | (([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?) | |||
| | (L(-[0-9])?) | |||
| | (L(-[1-2][0-9])?) | |||
| | (L(-[3][0-1])?) | |||
| | (LW) | |||
| | ([1-9]W) | |||
| | ([1-3][0-9]W) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| )[\s] | |||
| MONTH: | |||
| ( | |||
| ((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?) | |||
| | (([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2])) | |||
| | (((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?) | |||
| | ((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| )[\s] | |||
| DAY OF WEEK: | |||
| ( | |||
| (([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?) | |||
| | ([1-7]/([1-7])) | |||
| | (((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?) | |||
| | ((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?) | |||
| | (([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))(L|LW)?) | |||
| | (([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) | |||
| YEAR (OPTIONAL): | |||
| ( | |||
| [\s]? | |||
| ([\*])? | |||
| | ((19[7-9][0-9])|(20[0-9][0-9]))? | |||
| | (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))? | |||
| | ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)? | |||
| ) | |||
| </xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern | |||
| value="(((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?)|(([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3]))|([\?])|([\*]))[\s](((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?)|(([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?)|(L(-[0-9])?)|(L(-[1-2][0-9])?)|(L(-[3][0-1])?)|(LW)|([1-9]W)|([1-3][0-9]W)|([\?])|([\*]))[\s](((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?)|(([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2]))|(((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))|([\?])|([\*]))[\s]((([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?)|([1-7]/([1-7]))|(((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?)|((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?)|(([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))?(L|LW)?)|(([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?)|([\?])|([\*]))([\s]?(([\*])?|(19[7-9][0-9])|(20[0-9][0-9]))?| (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))?| ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)?)" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="repeat-countType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Number of times to repeat the Trigger (-1 for indefinite)</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:integer"> | |||
| <xs:minInclusive value="-1" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="simple-trigger-misfire-instructionType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Simple Trigger Misfire Instructions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="SmartPolicy" /> | |||
| <xs:pattern value="RescheduleNextWithExistingCount" /> | |||
| <xs:pattern value="RescheduleNextWithRemainingCount" /> | |||
| <xs:pattern value="RescheduleNowWithExistingRepeatCount" /> | |||
| <xs:pattern value="RescheduleNowWithRemainingRepeatCount" /> | |||
| <xs:pattern value="FireNow" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="cron-trigger-misfire-instructionType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Cron Trigger Misfire Instructions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="SmartPolicy" /> | |||
| <xs:pattern value="DoNothing" /> | |||
| <xs:pattern value="FireOnceNow" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="date-interval-trigger-misfire-instructionType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Date Interval Trigger Misfire Instructions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="SmartPolicy" /> | |||
| <xs:pattern value="DoNothing" /> | |||
| <xs:pattern value="FireOnceNow" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="interval-unitType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Interval Units</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="Day" /> | |||
| <xs:pattern value="Hour" /> | |||
| <xs:pattern value="Minute" /> | |||
| <xs:pattern value="Month" /> | |||
| <xs:pattern value="Second" /> | |||
| <xs:pattern value="Week" /> | |||
| <xs:pattern value="Year" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| </xs:schema> | |||
| @@ -1,7 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <packages> | |||
| <package id="Common.Logging" version="3.1.0" targetFramework="net40" /> | |||
| <package id="Common.Logging.Core" version="3.1.0" targetFramework="net40" /> | |||
| <package id="log4net" version="2.0.3" targetFramework="net40" /> | |||
| <package id="Quartz" version="2.3.2" targetFramework="net40" /> | |||
| </packages> | |||
| @@ -1,30 +0,0 @@ | |||
| | |||
| Microsoft Visual Studio Solution File, Format Version 12.00 | |||
| # Visual Studio 2012 | |||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickForensics.Quartz.Manager", "ClickForensics.Quartz.Manager\ClickForensics.Quartz.Manager.csproj", "{D23DACFA-11A1-480E-A6C4-1F37B564523D}" | |||
| EndProject | |||
| Global | |||
| GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
| Debug|Any CPU = Debug|Any CPU | |||
| Debug|Mixed Platforms = Debug|Mixed Platforms | |||
| Debug|x86 = Debug|x86 | |||
| Release|Any CPU = Release|Any CPU | |||
| Release|Mixed Platforms = Release|Mixed Platforms | |||
| Release|x86 = Release|x86 | |||
| EndGlobalSection | |||
| GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Debug|x86.ActiveCfg = Debug|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Release|Any CPU.Build.0 = Release|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Release|Mixed Platforms.Build.0 = Release|Any CPU | |||
| {D23DACFA-11A1-480E-A6C4-1F37B564523D}.Release|x86.ActiveCfg = Release|Any CPU | |||
| EndGlobalSection | |||
| GlobalSection(SolutionProperties) = preSolution | |||
| HideSolutionNode = FALSE | |||
| EndGlobalSection | |||
| EndGlobal | |||
| @@ -1,8 +0,0 @@ | |||
| GETTING STARTED | |||
| Visit the downloads section to obtain the latest version of Quartz.Net Manager. You can now download a zipped version as well as an MSI installer. | |||
| CUSTOM JOBS | |||
| You must let the program know which assemblies contain your jobs. You do so by editing the JobAssemblies.txt file and adding your assemblies there. Only jobs from the assemblies listed in that file will get loaded. Alternatively, select the Assemblies menu option from the Quartz.Net Manager menu and add the assemblies there. | |||
| LICENSE | |||
| This code is released under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html). | |||
| @@ -0,0 +1,82 @@ | |||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | |||
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |||
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |||
| <head> | |||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | |||
| <title>clickforensics/QuartzNetManager @ GitHub</title> | |||
| <style type="text/css"> | |||
| body { | |||
| margin-top: 1.0em; | |||
| background-color: #2258df; | |||
| font-family: "Helvetica,Arial,FreeSans"; | |||
| color: #ffffff; | |||
| } | |||
| #container { | |||
| margin: 0 auto; | |||
| width: 700px; | |||
| } | |||
| h1 { font-size: 3.8em; color: #dda720; margin-bottom: 3px; } | |||
| h1 .small { font-size: 0.4em; } | |||
| h1 a { text-decoration: none } | |||
| h2 { font-size: 1.5em; color: #dda720; } | |||
| h3 { text-align: center; color: #dda720; } | |||
| a { color: #dda720; } | |||
| .description { font-size: 1.2em; margin-bottom: 30px; margin-top: 30px; font-style: italic;} | |||
| .download { float: right; } | |||
| pre { background: #000; color: #fff; padding: 15px;} | |||
| hr { border: 0; width: 80%; border-bottom: 1px solid #aaa} | |||
| .footer { text-align:center; padding-top:30px; font-style: italic; } | |||
| </style> | |||
| </head> | |||
| <body> | |||
| <a href="http://github.com/clickforensics/QuartzNetManager"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a> | |||
| <div id="container"> | |||
| <div class="download"> | |||
| <a href="http://github.com/clickforensics/QuartzNetManager/zipball/master"> | |||
| <img border="0" width="90" src="http://github.com/images/modules/download/zip.png"></a> | |||
| <a href="http://github.com/clickforensics/QuartzNetManager/tarball/master"> | |||
| <img border="0" width="90" src="http://github.com/images/modules/download/tar.png"></a> | |||
| </div> | |||
| <h1><a href="http://github.com/clickforensics/QuartzNetManager">QuartzNetManager</a> | |||
| <span class="small">by <a href="http://github.com/clickforensics">clickforensics</a></span></h1> | |||
| <div class="description"> | |||
| A graphical interface to Quartz.Net | |||
| </div> | |||
| <h2>License</h2> | |||
| <p>ASF 2.0</p> | |||
| <h2>Authors</h2> | |||
| <p>Jay Vilalta (jay.vilalta@clickforensics.com) <br/> <br/> </p> | |||
| <h2>Contact</h2> | |||
| <p>Click Forensics, Inc. (github@clickforensics.com) <br/> </p> | |||
| <h2>Download</h2> | |||
| <p> | |||
| You can download this project in either | |||
| <a href="http://github.com/clickforensics/QuartzNetManager/zipball/master">zip</a> or | |||
| <a href="http://github.com/clickforensics/QuartzNetManager/tarball/master">tar</a> formats. | |||
| </p> | |||
| <p>You can also clone the project with <a href="http://git-scm.com">Git</a> | |||
| by running: | |||
| <pre>$ git clone git://github.com/clickforensics/QuartzNetManager</pre> | |||
| </p> | |||
| <div class="footer"> | |||
| get the source code on GitHub : <a href="http://github.com/clickforensics/QuartzNetManager">clickforensics/QuartzNetManager</a> | |||
| </div> | |||
| </div> | |||
| </body> | |||
| </html> | |||
| @@ -1,361 +0,0 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |||
| xmlns="http://quartznet.sourceforge.net/JobSchedulingData" | |||
| targetNamespace="http://quartznet.sourceforge.net/JobSchedulingData" | |||
| elementFormDefault="qualified" | |||
| version="2.0"> | |||
| <xs:element name="job-scheduling-data"> | |||
| <xs:annotation> | |||
| <xs:documentation>Root level node</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexType> | |||
| <xs:sequence maxOccurs="unbounded"> | |||
| <xs:element name="pre-processing-commands" type="pre-processing-commandsType" minOccurs="0" maxOccurs="1"> | |||
| <xs:annotation> | |||
| <xs:documentation>Commands to be executed before scheduling the jobs and triggers in this file.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="processing-directives" type="processing-directivesType" minOccurs="0" maxOccurs="1"> | |||
| <xs:annotation> | |||
| <xs:documentation>Directives to be followed while scheduling the jobs and triggers in this file.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="schedule" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:complexType> | |||
| <xs:sequence maxOccurs="unbounded"> | |||
| <xs:element name="job" type="job-detailType" minOccurs="0" maxOccurs="unbounded" /> | |||
| <xs:element name="trigger" type="triggerType" minOccurs="0" maxOccurs="unbounded" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| </xs:sequence> | |||
| <xs:attribute name="version" type="xs:string"> | |||
| <xs:annotation> | |||
| <xs:documentation>Version of the XML Schema instance</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:attribute> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| <xs:complexType name="pre-processing-commandsType"> | |||
| <xs:sequence maxOccurs="unbounded"> | |||
| <xs:element name="delete-jobs-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete all jobs, if any, in the identified group. "*" can be used to identify all groups. Will also result in deleting all triggers related to the jobs.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="delete-triggers-in-group" type="xs:string" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete all triggers, if any, in the identified group. "*" can be used to identify all groups. Will also result in deletion of related jobs that are non-durable.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="delete-job" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete the identified job if it exists (will also result in deleting all triggers related to it).</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexType> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| <xs:element name="delete-trigger" minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:annotation> | |||
| <xs:documentation>Delete the identified trigger if it exists (will also result in deletion of related jobs that are non-durable).</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexType> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| </xs:element> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="processing-directivesType"> | |||
| <xs:sequence> | |||
| <xs:element name="overwrite-existing-data" type="xs:boolean" minOccurs="0" default="true"> | |||
| <xs:annotation> | |||
| <xs:documentation>Whether the existing scheduling data (with same identifiers) will be overwritten. If false, and ignore-duplicates is not false, and jobs or triggers with the same names already exist as those in the file, an error will occur.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="ignore-duplicates" type="xs:boolean" minOccurs="0" default="false"> | |||
| <xs:annotation> | |||
| <xs:documentation>If true (and overwrite-existing-data is false) then any job/triggers encountered in this file that have names that already exist in the scheduler will be ignored, and no error will be produced.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| <xs:element name="schedule-trigger-relative-to-replaced-trigger" type="xs:boolean" minOccurs="0" default="false"> | |||
| <xs:annotation> | |||
| <xs:documentation>If true trigger's start time is calculated based on earlier run time instead of fixed value. Trigger's start time must be undefined for this to work.</xs:documentation> | |||
| </xs:annotation> | |||
| </xs:element> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="job-detailType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a JobDetail</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="job-type" type="xs:string" /> | |||
| <xs:sequence minOccurs="0"> | |||
| <xs:element name="durable" type="xs:boolean" /> | |||
| <xs:element name="recover" type="xs:boolean" /> | |||
| </xs:sequence> | |||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="job-data-mapType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a JobDataMap</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence minOccurs="0" maxOccurs="unbounded"> | |||
| <xs:element name="entry" type="entryType" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="entryType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a JobDataMap entry</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence> | |||
| <xs:element name="key" type="xs:string" /> | |||
| <xs:element name="value" type="xs:string" /> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="triggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a Trigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:choice> | |||
| <xs:element name="simple" type="simpleTriggerType" /> | |||
| <xs:element name="cron" type="cronTriggerType" /> | |||
| <xs:element name="calendar-interval" type="calendarIntervalTriggerType" /> | |||
| </xs:choice> | |||
| </xs:complexType> | |||
| <xs:complexType name="abstractTriggerType" abstract="true"> | |||
| <xs:annotation> | |||
| <xs:documentation>Common Trigger definitions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:sequence> | |||
| <xs:element name="name" type="xs:string" /> | |||
| <xs:element name="group" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="description" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="job-name" type="xs:string" /> | |||
| <xs:element name="job-group" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="priority" type="xs:nonNegativeInteger" minOccurs="0" /> | |||
| <xs:element name="calendar-name" type="xs:string" minOccurs="0" /> | |||
| <xs:element name="job-data-map" type="job-data-mapType" minOccurs="0" /> | |||
| <xs:sequence minOccurs="0"> | |||
| <xs:choice> | |||
| <xs:element name="start-time" type="xs:dateTime" /> | |||
| <xs:element name="start-time-seconds-in-future" type="xs:nonNegativeInteger" /> | |||
| </xs:choice> | |||
| <xs:element name="end-time" type="xs:dateTime" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:sequence> | |||
| </xs:complexType> | |||
| <xs:complexType name="simpleTriggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a SimpleTrigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexContent> | |||
| <xs:extension base="abstractTriggerType"> | |||
| <xs:sequence> | |||
| <xs:element name="misfire-instruction" type="simple-trigger-misfire-instructionType" minOccurs="0" /> | |||
| <xs:sequence minOccurs="0"> | |||
| <xs:element name="repeat-count" type="repeat-countType" /> | |||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||
| </xs:sequence> | |||
| </xs:sequence> | |||
| </xs:extension> | |||
| </xs:complexContent> | |||
| </xs:complexType> | |||
| <xs:complexType name="cronTriggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a CronTrigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexContent> | |||
| <xs:extension base="abstractTriggerType"> | |||
| <xs:sequence> | |||
| <xs:element name="misfire-instruction" type="cron-trigger-misfire-instructionType" minOccurs="0" /> | |||
| <xs:element name="cron-expression" type="cron-expressionType" /> | |||
| <xs:element name="time-zone" type="xs:string" minOccurs="0" /> | |||
| </xs:sequence> | |||
| </xs:extension> | |||
| </xs:complexContent> | |||
| </xs:complexType> | |||
| <xs:complexType name="calendarIntervalTriggerType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Define a DateIntervalTrigger</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:complexContent> | |||
| <xs:extension base="abstractTriggerType"> | |||
| <xs:sequence> | |||
| <xs:element name="misfire-instruction" type="date-interval-trigger-misfire-instructionType" minOccurs="0" /> | |||
| <xs:element name="repeat-interval" type="xs:nonNegativeInteger" /> | |||
| <xs:element name="repeat-interval-unit" type="interval-unitType" /> | |||
| </xs:sequence> | |||
| </xs:extension> | |||
| </xs:complexContent> | |||
| </xs:complexType> | |||
| <xs:simpleType name="cron-expressionType"> | |||
| <xs:annotation> | |||
| <xs:documentation> | |||
| Cron expression (see JavaDoc for examples) | |||
| Special thanks to Chris Thatcher (thatcher@butterfly.net) for the regular expression! | |||
| Regular expressions are not my strong point but I believe this is complete, | |||
| with the caveat that order for expressions like 3-0 is not legal but will pass, | |||
| and month and day names must be capitalized. | |||
| If you want to examine the correctness look for the [\s] to denote the | |||
| seperation of individual regular expressions. This is how I break them up visually | |||
| to examine them: | |||
| SECONDS: | |||
| ( | |||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) [\s] | |||
| MINUTES: | |||
| ( | |||
| ((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?) | |||
| | (([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9])) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) [\s] | |||
| HOURS: | |||
| ( | |||
| ((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?) | |||
| | (([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3])) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) [\s] | |||
| DAY OF MONTH: | |||
| ( | |||
| ((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?) | |||
| | (([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?) | |||
| | (L(-[0-9])?) | |||
| | (L(-[1-2][0-9])?) | |||
| | (L(-[3][0-1])?) | |||
| | (LW) | |||
| | ([1-9]W) | |||
| | ([1-3][0-9]W) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| )[\s] | |||
| MONTH: | |||
| ( | |||
| ((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?) | |||
| | (([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2])) | |||
| | (((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?) | |||
| | ((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| )[\s] | |||
| DAY OF WEEK: | |||
| ( | |||
| (([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?) | |||
| | ([1-7]/([1-7])) | |||
| | (((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?) | |||
| | ((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?) | |||
| | (([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))(L|LW)?) | |||
| | (([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?) | |||
| | ([\?]) | |||
| | ([\*]) | |||
| ) | |||
| YEAR (OPTIONAL): | |||
| ( | |||
| [\s]? | |||
| ([\*])? | |||
| | ((19[7-9][0-9])|(20[0-9][0-9]))? | |||
| | (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))? | |||
| | ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)? | |||
| ) | |||
| </xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern | |||
| value="(((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?,)*([0-9]|[0-5][0-9])(-([0-9]|[0-5][0-9]))?)|(([\*]|[0-9]|[0-5][0-9])/([0-9]|[0-5][0-9]))|([\?])|([\*]))[\s](((([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?,)*([0-9]|[0-1][0-9]|[2][0-3])(-([0-9]|[0-1][0-9]|[2][0-3]))?)|(([\*]|[0-9]|[0-1][0-9]|[2][0-3])/([0-9]|[0-1][0-9]|[2][0-3]))|([\?])|([\*]))[\s](((([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?,)*([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(-([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1]))?(C)?)|(([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])/([1-9]|[0][1-9]|[1-2][0-9]|[3][0-1])(C)?)|(L(-[0-9])?)|(L(-[1-2][0-9])?)|(L(-[3][0-1])?)|(LW)|([1-9]W)|([1-3][0-9]W)|([\?])|([\*]))[\s](((([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?,)*([1-9]|0[1-9]|1[0-2])(-([1-9]|0[1-9]|1[0-2]))?)|(([1-9]|0[1-9]|1[0-2])/([1-9]|0[1-9]|1[0-2]))|(((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?,)*(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(-(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)|((JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))|([\?])|([\*]))[\s]((([1-7](-([1-7]))?,)*([1-7])(-([1-7]))?)|([1-7]/([1-7]))|(((MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?,)*(MON|TUE|WED|THU|FRI|SAT|SUN)(-(MON|TUE|WED|THU|FRI|SAT|SUN))?(C)?)|((MON|TUE|WED|THU|FRI|SAT|SUN)/(MON|TUE|WED|THU|FRI|SAT|SUN)(C)?)|(([1-7]|(MON|TUE|WED|THU|FRI|SAT|SUN))?(L|LW)?)|(([1-7]|MON|TUE|WED|THU|FRI|SAT|SUN)#([1-7])?)|([\?])|([\*]))([\s]?(([\*])?|(19[7-9][0-9])|(20[0-9][0-9]))?| (((19[7-9][0-9])|(20[0-9][0-9]))/((19[7-9][0-9])|(20[0-9][0-9])))?| ((((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?,)*((19[7-9][0-9])|(20[0-9][0-9]))(-((19[7-9][0-9])|(20[0-9][0-9])))?)?)" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="repeat-countType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Number of times to repeat the Trigger (-1 for indefinite)</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:integer"> | |||
| <xs:minInclusive value="-1" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="simple-trigger-misfire-instructionType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Simple Trigger Misfire Instructions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="SmartPolicy" /> | |||
| <xs:pattern value="RescheduleNextWithExistingCount" /> | |||
| <xs:pattern value="RescheduleNextWithRemainingCount" /> | |||
| <xs:pattern value="RescheduleNowWithExistingRepeatCount" /> | |||
| <xs:pattern value="RescheduleNowWithRemainingRepeatCount" /> | |||
| <xs:pattern value="FireNow" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="cron-trigger-misfire-instructionType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Cron Trigger Misfire Instructions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="SmartPolicy" /> | |||
| <xs:pattern value="DoNothing" /> | |||
| <xs:pattern value="FireOnceNow" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="date-interval-trigger-misfire-instructionType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Date Interval Trigger Misfire Instructions</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="SmartPolicy" /> | |||
| <xs:pattern value="DoNothing" /> | |||
| <xs:pattern value="FireOnceNow" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| <xs:simpleType name="interval-unitType"> | |||
| <xs:annotation> | |||
| <xs:documentation>Interval Units</xs:documentation> | |||
| </xs:annotation> | |||
| <xs:restriction base="xs:string"> | |||
| <xs:pattern value="Day" /> | |||
| <xs:pattern value="Hour" /> | |||
| <xs:pattern value="Minute" /> | |||
| <xs:pattern value="Month" /> | |||
| <xs:pattern value="Second" /> | |||
| <xs:pattern value="Week" /> | |||
| <xs:pattern value="Year" /> | |||
| </xs:restriction> | |||
| </xs:simpleType> | |||
| </xs:schema> | |||
| @@ -1,4 +0,0 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <repositories> | |||
| <repository path="..\ClickForensics.Quartz.Manager\packages.config" /> | |||
| </repositories> | |||