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

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

No Description