SequenceDataProvider.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. using System.Collections.Generic;
  2. using System.Collections.ObjectModel;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Xml;
  6. using Aitex.Common.Util;
  7. using Aitex.Core.RT.Event;
  8. using MECF.Framework.Common.DataCenter;
  9. using MECF.Framework.Common.Equipment;
  10. using MECF.Framework.Common.Jobs;
  11. using MECF.Framework.Common.RecipeCenter;
  12. using OpenSEMI.ClientBase;
  13. using OpenSEMI.ClientBase.ServiceProvider;
  14. using RecipeEditorLib.DGExtension.CustomColumn;
  15. namespace CyberX8_MainPages.Sequence
  16. {
  17. public class SequenceDataProvider : IProvider
  18. {
  19. private IUiSequenceManager m_uiSequenceManager;
  20. public SequenceDataProvider(IUiSequenceManager uiSequenceManager)
  21. {
  22. m_uiSequenceManager = uiSequenceManager;
  23. }
  24. public void Create()
  25. {
  26. }
  27. public bool CreateSequenceFolder(string foldername)
  28. {
  29. return m_uiSequenceManager.CreateSequenceFolder(foldername);
  30. }
  31. public bool DeleteSequenceFolder(string foldername)
  32. {
  33. return m_uiSequenceManager.DeleteSequenceFolder(foldername);
  34. }
  35. public bool Save(SequenceData seq)
  36. {
  37. var path = GenerateSequenceFilePath("Sequence", seq.Name);
  38. if (CheckSequenceUsedInJob(seq.Name))
  39. {
  40. DialogBox.ShowDialog(DialogButton.OK, 0, "Sequence is used in auto running jobs, can not be modified");
  41. return false;
  42. }
  43. return m_uiSequenceManager.SaveSequence(seq.Name, seq.ToXml());
  44. }
  45. public List<string> GetSequences()
  46. {
  47. return m_uiSequenceManager.GetSequenceNameList();
  48. }
  49. public List<string> GetRecipes(ModuleName modulename)
  50. {
  51. return m_uiSequenceManager.GetRecipes(modulename, true).ToList();
  52. }
  53. public SequenceData GetSequenceByName(ObservableCollection<EditorDataGridTemplateColumnBase> _columns, string name)
  54. {
  55. string content = m_uiSequenceManager.GetSequence(name);
  56. SequenceData seq = new SequenceData();
  57. XmlDocument doc = new XmlDocument();
  58. doc.LoadXml(content);
  59. seq.Name = name;
  60. seq.Load(_columns, doc);
  61. return seq;
  62. }
  63. public bool Rename(string beforename, string currentname)
  64. {
  65. var path = GenerateSequenceFilePath("Sequence", currentname);
  66. if (CheckSequenceUsedInJob(currentname))
  67. {
  68. DialogBox.ShowDialog(DialogButton.OK, 0, "Sequence is used in auto running jobs, can not be modified");
  69. return false;
  70. }
  71. return m_uiSequenceManager.RenameSequence(beforename, currentname);
  72. }
  73. public bool Delete(string name)
  74. {
  75. var path = GenerateSequenceFilePath("Sequence", name);
  76. if (CheckSequenceUsedInJob(name))
  77. {
  78. DialogBox.ShowDialog(DialogButton.OK, 0, "Sequence is used in auto running jobs, can not be modified");
  79. return false;
  80. }
  81. return m_uiSequenceManager.DeleteSequence(name);
  82. }
  83. public bool SaveAs(string name, SequenceData seq)
  84. {
  85. var path = GenerateSequenceFilePath("Sequence", name);
  86. if (CheckSequenceUsedInJob(name))
  87. {
  88. DialogBox.ShowDialog(DialogButton.OK, 0, "Sequence is used in auto running jobs, can not be modified");
  89. return false;
  90. }
  91. return m_uiSequenceManager.SaveAsSequence(name, seq.ToXml());
  92. }
  93. public string GetSequenceFromXml()
  94. {
  95. string template = m_uiSequenceManager.GetSequenceFormatXml();
  96. return template;
  97. }
  98. private string GenerateSequenceFilePath(string chamId, string recipeName)
  99. {
  100. return getRecipeDirPath(chamId) + recipeName + ".seq";
  101. }
  102. private string getRecipeDirPath(string chamId)
  103. {
  104. var dir = string.Format("{0}{1}\\", PathManager.GetRecipeDir(), chamId);
  105. DirectoryInfo di = new DirectoryInfo(dir);
  106. if (!di.Exists) di.Create();
  107. return dir;
  108. }
  109. public bool CheckSequenceUsedInJob(string sequenceName)
  110. {
  111. List<ProcessJobInfo> ProcessList = (List<ProcessJobInfo>)QueryDataClient.Instance.Service.GetData("Scheduler.CurrentRecipeList");
  112. if (ProcessList != null)
  113. {
  114. foreach (var pj in ProcessList)
  115. {
  116. if (string.Equals(sequenceName, pj.Sequence.Name, System.StringComparison.OrdinalIgnoreCase))
  117. return true;
  118. }
  119. }
  120. return false;
  121. }
  122. public List<string> GetSequenceNameList()
  123. {
  124. return m_uiSequenceManager.GetSequenceNameList();
  125. }
  126. public List<string> GetRecipesByPath(string prefixPath)
  127. {
  128. return m_uiSequenceManager.GetRecipesByPath(prefixPath);
  129. }
  130. }
  131. }