using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ServiceModel;
using MECF.Framework.Common.CommonData;
using MECF.Framework.Common.Equipment;
namespace MECF.Framework.Common.ParameterCenter
{
    [ServiceContract]
    public interface IParameterService
    {
        [OperationContract]
        string LoadParameter(ModuleName chamId, string parameterName);
        /// 
        /// 
        /// 
        /// 
        ///  recipeName + recipeContent 
        [OperationContract]
        Tuple LoadRunTimeParameterInfo(ModuleName chamId);
        [OperationContract]
        IEnumerable GetParameters(ModuleName chamId, bool includeUsedParameter);
        [OperationContract]
        string GetXmlParameterList(ModuleName chamId, bool includeUsedParameter);
        [OperationContract]
        bool DeleteParameter(ModuleName chamId, string parameterName);
        [OperationContract]
        bool DeleteFolder(ModuleName chamId, string folderName);
        [OperationContract]
        bool SaveAsParameter(ModuleName chamId, string parameterName, string parameterContent);
        [OperationContract]
        bool SaveParameter(ModuleName chamId, string parameterName, string parameterContent);
        [OperationContract]
        bool CreateFolder(ModuleName chamId, string folderName);
        [OperationContract]
        bool RenameParameter(ModuleName chamId, string oldName, string newName);
        [OperationContract]
        bool BackupParameter(string fileOriginalPath, string fileDestinationPath, bool isSaveLinkParameter, List parameterNames);
        [OperationContract]
        bool CheckBackParameterIsLinkParameter(string fileOriginalPath, List parameterNames);
        [OperationContract]
        string GetXmlRestoreParameterList(string fileType, bool includeUsedParameter);
        [OperationContract]
        string LoadRestoreParameter(string pathName, string parameterName);
        [OperationContract]
        List RestoreParameterFolderList();
        [OperationContract]
        bool RestoreParameter(string chamId,bool isSaveLink, List parameterNames);
        [OperationContract]
        bool SigRestoreParameter(string chamId, List parameterNames);
        [OperationContract]
        bool RenameFolder(ModuleName chamId, string oldName, string newName);
        [OperationContract]
        string GetParameterFormatXml(string chamId);
        [OperationContract]
        Dictionary> GetGroupParameterTemplate();
        [OperationContract]
        string GetParameterTemplate(ModuleName chamId);
        [OperationContract]
        string GetParameterByBarcode(ModuleName chamId, string barcode);
        [OperationContract]
        List CheckParameter(string prefix, string parameterName);
        [OperationContract]
        bool GetParameterChecked(string prefix, string parameterName);
        #region extended Parameter interface
        [OperationContract]
        string LoadParameterByPath(string pathName, string parameterName);
        [OperationContract]
        Tuple LoadRunTimeParameterInfoByPath(string pathName);
        [OperationContract]
        IEnumerable GetParametersByPath(string pathName, bool includeUsedParameter);
        [OperationContract]
        string GetXmlParameterListByPath(string pathName, bool includeUsedRecipe);
        [OperationContract]
        List GetFileNodeParameterListByPath(string pathName);
        [OperationContract]
        bool DeleteParameterByPath(string pathName, string parameterName);
        [OperationContract]
        bool DeleteFolderByPath(string pathName, string folderName);
        [OperationContract]
        bool SaveAsParameterByPath(string pathName, string parameterName, string parameterContent);
        [OperationContract]
        bool SaveParameterByPath(string pathName, string parameterName, string parameterContent);
        [OperationContract]
        bool CreateFolderByPath(string pathName, string folderName);
        [OperationContract]
        bool RenameParameterByPath(string pathName, string oldName, string newName);
        [OperationContract]
        bool RenameFolderByPath(string pathName, string oldName, string newName);
        [OperationContract]
        string GetParameterFormatXmlByPath(string pathName);
        [OperationContract]
        string GetParameterTemplateByPath(string pathName);
        [OperationContract]
        string GetParameterByBarcodeByPath(string pathName, string barcode);
        #endregion
    }
}