using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ServiceModel; using Aitex.Core.RT.Event; using Aitex.Core.RT.Key; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.RecipeCenter; using MECF.Framework.Common.Equipment; namespace MECF.Framework.Common.RecipeCenter { class RecipeService : IRecipeService { /// /// Load a recipe from server to client for editing. /// /// /// /// public string LoadRecipe(ModuleName chamId, string recipeName) { EV.PostInfoLog(chamId.ToString(), string.Format("Read {0} recipe {1}.", chamId, recipeName)); return RecipeFileManager.Instance.LoadRecipe(chamId.ToString(), recipeName, false); } /// /// Delete a recipe by recipe name /// /// /// /// public bool DeleteRecipe(ModuleName chamId, string recipeName) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } //if (!ChamberOperationService.IsSuperEnter()) return false; EV.PostInfoLog(chamId.ToString(), string.Format("Delete {0} recipe {1}.", chamId, recipeName)); return RecipeFileManager.Instance.DeleteRecipe(chamId.ToString(), recipeName); } /// /// Get recipe list in xml format /// /// /// /// public string GetXmlRecipeList(ModuleName chamId, bool includingUsedRecipe) { return RecipeFileManager.Instance.GetXmlRecipeList(chamId.ToString(), includingUsedRecipe); } /// /// Get recipe data by recipe name /// /// /// /// public IEnumerable GetRecipes(ModuleName chamId, bool includingUsedRecipe) { return RecipeFileManager.Instance.GetRecipes(chamId.ToString(), includingUsedRecipe); } /// /// Rename recipe /// /// /// /// /// public bool RenameRecipe(ModuleName chamId, string oldName, string newName) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("Rename {0} recipe {1} to {2}.", chamId, oldName, newName)); //if (!ChamberOperationService.IsSuperEnter()) return false; return RecipeFileManager.Instance.RenameRecipe(chamId.ToString(), oldName, newName); } public bool BackupRecipe(string fileOriginalPath, string fileDestinationPath, bool isSaveLinkRecipe, List recipeNames) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(fileOriginalPath.ToString(), string.Format("Backup {0} recipe .", fileOriginalPath)); //if (!ChamberOperationService.IsSuperEnter()) return false; return RecipeFileManager.Instance.BackupRecipe(fileOriginalPath, fileDestinationPath, isSaveLinkRecipe, recipeNames); } public bool CheckBackRecipeIsLinkRecipe(string fileOriginalPath, List recipeNames) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(fileOriginalPath.ToString(), string.Format("Backup IsLinkRecipe {0} recipe .", fileOriginalPath)); return RecipeFileManager.Instance.CheckBackRecipeIsLinkRecipe(fileOriginalPath,recipeNames); } public List RestoreRecipeFolderList() { return RecipeFileManager.Instance.RestoreRecipeFolderList(); } public string GetXmlRestoreRecipeList(string fileType, bool includingUsedRecipe) { return RecipeFileManager.Instance.GetXmlRestoreRecipeList(fileType, includingUsedRecipe); } public string LoadRestoreRecipe(string pathName, string recipeName) { EV.PostInfoLog(pathName, string.Format("Read {0} recipe {1}.", pathName, recipeName)); return RecipeFileManager.Instance.LoadRestoreRecipe(pathName, recipeName, false); } public bool RestoreRecipe(string chamId,bool isSaveLink, List recipeNames) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("Restore {0} recipe .", chamId)); return RecipeFileManager.Instance.RestoreRecipe(chamId.ToString(), isSaveLink,recipeNames); } public bool SigRestoreRecipe(string chamId, List recipeNames) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("SigRestoreRecipe {0} recipe .", chamId)); return RecipeFileManager.Instance.SigRestoreRecipe(chamId.ToString(), recipeNames); } /// /// delete a recipe folder /// /// /// /// public bool DeleteFolder(ModuleName chamId, string folderName) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } //if (!ChamberOperationService.IsSuperEnter()) return false; EV.PostInfoLog(chamId.ToString(), string.Format("Delete {0} recipe folder {1}.", chamId, folderName)); return RecipeFileManager.Instance.DeleteFolder(chamId.ToString(), folderName); } /// /// save recipe content /// /// /// /// /// public bool SaveRecipe(ModuleName chamId, string recipeName, string recipeContent) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("Modify and save {0} recipe {1}.", chamId, recipeName)); return RecipeFileManager.Instance.SaveRecipe(chamId.ToString(), recipeName, recipeContent, false, false); } /// /// save recipe content /// /// /// /// /// public bool SaveAsRecipe(ModuleName chamId, string recipeName, string recipeContent) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("Modify and save as {0} recipe {1}.", chamId, recipeName)); return RecipeFileManager.Instance.SaveAsRecipe(chamId.ToString(), recipeName, recipeContent); } /// /// create a new recipe folder /// /// /// /// public bool CreateFolder(ModuleName chamId, string folderName) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("Create {0} recipe foler {1}.", chamId, folderName)); return RecipeFileManager.Instance.CreateFolder(chamId.ToString(), folderName); } /// /// Rename recipe folder name /// /// /// /// /// public bool RenameFolder(ModuleName chamId, string oldName, string newName) { if (KeyManager.Instance.IsExpired) { EV.PostMessage("System", EventEnum.DefaultWarning, "Software is expired. Can not do the operation"); return false; } EV.PostInfoLog(chamId.ToString(), string.Format("Rename {0} recipe folder {1} to {2}.", chamId, oldName, newName)); return RecipeFileManager.Instance.RenameFolder(chamId.ToString(), oldName, newName); } /// /// get reactor's recipe format define file /// /// /// public string GetRecipeFormatXml(ModuleName chamId) { return RecipeFileManager.Instance.GetRecipeFormatXml(chamId.ToString()); } public Dictionary> GetGroupRecipeTemplate() { return RecipeFileManager.Instance.GetGroupRecipeTemplate(); } /// /// get reactor's template recipe file /// /// /// public string GetRecipeTemplate(ModuleName chamId) { return RecipeFileManager.Instance.GetRecipeTemplate(chamId.ToString()); } /// /// 获取当前反应腔正在运行的Recipe信息 /// /// /// recipeName + recipeContent public Tuple LoadRunTimeRecipeInfo(ModuleName chamId) { return null; //var pm = PmManager.GetReactor(chamId); //if (pm != null) return pm.LoadRunTimeRecipeInfo(); //return Singleton.Instance.GetRecipeInfo(); } public string GetRecipeByBarcode(ModuleName chamId, string barcode) { return ""; //return RecipeFileManager.Instance.GetRecipeByBarcode(chamId.ToString(), barcode); } public string GetXmlSequenceList(ModuleName chamId) { return RecipeFileManager.Instance.GetXmlSequenceList(chamId.ToString()); } public string GetSequence(string sequenceName) { return RecipeFileManager.Instance.GetSequence(sequenceName, true); } public List GetSequenceNameList() { return RecipeFileManager.Instance.GetSequenceNameList(); } public bool DeleteSequence(string sequenceName) { return RecipeFileManager.Instance.DeleteSequence(sequenceName); } public bool SaveSequence(string sequenceName, string sequenceContent) { return RecipeFileManager.Instance.SaveSequence(sequenceName, sequenceContent, false); } public bool SaveAsSequence(string sequenceName, string sequenceContent) { return RecipeFileManager.Instance.SaveAsSequence(sequenceName, sequenceContent); } public bool RenameSequence(string oldName, string newName) { return RecipeFileManager.Instance.RenameSequence(oldName, newName); } public string GetSequenceFormatXml() { return RecipeFileManager.Instance.GetSequenceFormatXml(); } public bool RenameSequenceFolder(string oldName, string newName) { return RecipeFileManager.Instance.RenameSequenceFolder(oldName, newName); } public bool CreateSequenceFolder(string folderName) { return RecipeFileManager.Instance.CreateSequenceFolder(folderName); } public bool DeleteSequenceFolder(string folderName) { return RecipeFileManager.Instance.DeleteSequenceFolder(folderName); } #region extended recipe interface public string LoadRecipeByPath(string pathName, string recipeName) { return RecipeFileManager.Instance.LoadRecipe(pathName, recipeName, false); } public string LoadRecipeByFullPath(string fullPath) { return RecipeFileManager.Instance.LoadRecipeByFullPath(fullPath); } public bool DeleteRecipeByPath(string pathName, string recipeName) { return RecipeFileManager.Instance.DeleteRecipe(pathName, recipeName); } public string GetXmlRecipeListByPath(string pathName, bool includingUsedRecipe) { return RecipeFileManager.Instance.GetXmlRecipeList(pathName, includingUsedRecipe); } public IEnumerable GetRecipesByPath(string pathName, bool includingUsedRecipe) { return RecipeFileManager.Instance.GetRecipes(pathName, includingUsedRecipe); } public bool RenameRecipeByPath(string pathName, string oldName, string newName) { return RecipeFileManager.Instance.RenameRecipe(pathName, oldName, newName); } public bool DeleteFolderByPath(string pathName, string folderName) { return RecipeFileManager.Instance.DeleteFolder(pathName, folderName); } public bool SaveRecipeByPath(string pathName, string recipeName, string recipeContent) { return RecipeFileManager.Instance.SaveRecipe(pathName, recipeName, recipeContent, false, false); } public bool SaveAsRecipeByPath(string pathName, string recipeName, string recipeContent) { return RecipeFileManager.Instance.SaveAsRecipe(pathName, recipeName, recipeContent); } public bool CreateFolderByPath(string pathName, string folderName) { return RecipeFileManager.Instance.CreateFolder(pathName, folderName); } public bool RenameFolderByPath(string pathName, string oldName, string newName) { return RecipeFileManager.Instance.RenameFolder(pathName, oldName, newName); } public string GetRecipeFormatXmlByPath(string pathName) { return RecipeFileManager.Instance.GetRecipeFormatXml(pathName); } public string GetRecipeTemplateByPath(string pathName) { return RecipeFileManager.Instance.GetRecipeTemplate(pathName); } public Tuple LoadRunTimeRecipeInfoByPath(string pathName) { return null; } public string GetRecipeByBarcodeByPath(string pathName, string barcode) { return ""; } public List CheckRecipe(string prefix, string recipeName) { RecipeFileManager.Instance.CheckRecipe(prefix, recipeName, out List reasons); return reasons; } public bool CheckRecipe(string prefix, string recipeName, out List reasons) { throw new NotImplementedException(); } #endregion } }