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 4.6 kB

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

No Description