You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

AddJobForm.cs 5.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Quartz;
  10. using System.Reflection;
  11. using Quartz.Job;
  12. using System.IO;
  13. namespace ClickForensics.Quartz.Manager
  14. {
  15. public partial class AddJobForm : Form
  16. {
  17. public AddJobForm()
  18. {
  19. InitializeComponent();
  20. loadJobAssemblies();
  21. cboTriggerType.Items.Add("Cron");
  22. cboTriggerType.SelectedItem = "Cron";
  23. if (cboJobType.SelectedText == "NativeJob")
  24. {
  25. jobDataListView.Items.Add(new ListViewItem(new string[] { "consumeStreams", "true" }));
  26. jobDataListView.Items.Add(new ListViewItem(new string[] { "waitForProcess", "true" }));
  27. txtKey.Text = "command";
  28. }
  29. }
  30. private void loadJobAssemblies()
  31. {
  32. var assemblies = AssemblyRepository.GetAssemblies();
  33. SortedList<string, string> jobTypes = new SortedList<string, string>();
  34. foreach (var assemblyName in assemblies)
  35. {
  36. Assembly assembly = Assembly.LoadFile(Environment.CurrentDirectory + "\\" + assemblyName);
  37. foreach (Type type in assembly.GetTypes())
  38. {
  39. if (typeof(IJob).IsAssignableFrom(type) && type.IsClass)
  40. {
  41. jobTypes.Add(type.FullName, assembly.GetName().Name);
  42. }
  43. }
  44. }
  45. foreach (var item in jobTypes)
  46. {
  47. cboJobType.Items.Add(new JobType() { AssemblyName = item.Value, FullName = item.Key });
  48. }
  49. //cboJobType.Items.AddRange(jobTypes.Values.ToArray<string>());
  50. }
  51. public AddJobForm(TriggerNode node)
  52. : this()
  53. {
  54. setTriggerData((CronTrigger)node.Trigger);
  55. setJobData(((JobNode)node.Parent.Parent).Detail);
  56. }
  57. private void setTriggerData(CronTrigger trigger)
  58. {
  59. setTriggerType();
  60. txtCronExpression.Text = trigger.CronExpressionString;
  61. txtTriggerDescription.Text = trigger.Description;
  62. txtTriggerGroup.Text = trigger.Group;
  63. txtTriggerName.Text = trigger.Name;
  64. }
  65. private void setJobData(JobDetail detail)
  66. {
  67. setJobType(detail);
  68. txtJobDescription.Text = detail.Description;
  69. txtJobGroup.Text = detail.Group;
  70. txtJobName.Text = detail.Name;
  71. setJobDataMap(detail);
  72. }
  73. private void setJobDataMap(JobDetail detail)
  74. {
  75. jobDataListView.Items.Clear();
  76. foreach (var item in detail.JobDataMap.GetKeys())
  77. {
  78. jobDataListView.Items.Add(new ListViewItem(new string[] { item, detail.JobDataMap.Get(item).ToString() }));
  79. }
  80. }
  81. private void setJobType(JobDetail detail)
  82. {
  83. cboJobType.SelectedItem = detail.JobType.FullName;
  84. }
  85. private void setTriggerType()
  86. {
  87. //nothing to do right now
  88. }
  89. public JobDetail JobDetail { get; set; }
  90. public Trigger Trigger { get; set; }
  91. private void btnCancel_Click(object sender, EventArgs e)
  92. {
  93. this.Close();
  94. }
  95. private void btnAdd_Click(object sender, EventArgs e)
  96. {
  97. JobDetail = getJobDetail();
  98. Trigger = getTrigger();
  99. Trigger.JobGroup = JobDetail.Group;
  100. Trigger.JobName = JobDetail.Name;
  101. this.Close();
  102. }
  103. private JobDetail getJobDetail()
  104. {
  105. JobDetail detail = new JobDetail();
  106. detail.Description = txtJobDescription.Text;
  107. detail.Group = txtJobGroup.Text;
  108. detail.JobDataMap = getJobDataMap();
  109. detail.JobType = getJobType();
  110. detail.Name = txtJobName.Text;
  111. return detail;
  112. }
  113. private Trigger getTrigger()
  114. {
  115. Trigger trigger;
  116. if (cboTriggerType.SelectedText == "Simple")
  117. {
  118. trigger = new SimpleTrigger();
  119. }
  120. else
  121. {
  122. trigger = new CronTrigger();
  123. ((CronTrigger)trigger).CronExpressionString = txtCronExpression.Text;
  124. }
  125. trigger.Description = txtTriggerDescription.Text;
  126. trigger.Group = txtTriggerGroup.Text;
  127. trigger.Name = txtTriggerName.Text;
  128. return trigger;
  129. }
  130. private Type getJobType()
  131. {
  132. JobType type = (JobType)cboJobType.SelectedItem;
  133. return Type.GetType(type.FullName + "," + type.AssemblyName, true);
  134. }
  135. private JobDataMap getJobDataMap()
  136. {
  137. JobDataMap map = new JobDataMap();
  138. foreach (ListViewItem item in jobDataListView.Items)
  139. {
  140. map.Add(item.SubItems[0].Text, item.SubItems[1].Text);
  141. }
  142. return map;
  143. }
  144. private void btnAddKeyValue_Click(object sender, EventArgs e)
  145. {
  146. ListViewItem item = new ListViewItem(new string[] { txtKey.Text, txtValue.Text });
  147. jobDataListView.Items.Add(item);
  148. }
  149. private void btnDelete_Click(object sender, EventArgs e)
  150. {
  151. foreach (ListViewItem item in jobDataListView.SelectedItems)
  152. {
  153. jobDataListView.Items.Remove(item);
  154. }
  155. }
  156. }
  157. }