/// <summary>
        /// 根据跟定的FunctionName得到元数据,如果找不到,抛出异常
        /// 缓存查询过的
        /// </summary>
        /// <param name="function_name">Function Name</param>
        /// <returns>Meta_FCMaster,元数据,失败抛出异常</returns>
        public Meta_FCMaster get_BlockMeta(string function_name)
        {
            if (funcname_to_MetaFCMaster.ContainsKey(function_name))
            {
                //缓存中存在此function的相关信息,查找缓存
                Meta_FCMaster master_temp = funcname_to_MetaFCMaster[function_name] as Meta_FCMaster;
                return(master_temp);
            }
            //从数据库中加载
            IList <Meta_FCMaster> meta_masters = manager.MetaMasterCRUD.Load_FCMasters_By_FuncName(function_name);

            if (meta_masters.Count > 1)
            {
                throw new Exception("same function name occurs more than once");
            }
            if (meta_masters.Count < 1)
            {
                throw new Exception("no function: " + function_name + "metadata!");
            }
            Meta_FCMaster meta_master = meta_masters[0];

            //添加进缓存
            this.funcname_to_MetaFCMaster[function_name] = meta_master;
            return(meta_master);
        }
        /// <summary>
        /// 根据跟定的Function Name和Pin Name,Pin的Index,如果找不到,抛出异常
        /// 缓存查询过的
        /// </summary>
        /// <param name="function_name">Function Name</param>
        /// <param name="pinname">Pin Name</param>
        /// <returns>Pin 的Index,失败抛出异常</returns>
        public int get_pin_index(string function_name, string pinname)
        {
            Meta_FCMaster meta_master = get_BlockMeta(function_name);
            Meta_FCDetail meta_pin    = get_PinMeta(meta_master, pinname);

            return(meta_pin.PinIndex);
        }
        public string get_pin_dataType(string function_name, string pinname)
        {
            Meta_FCMaster meta_master = get_BlockMeta(function_name);
            Meta_FCDetail meta_pin    = get_PinMeta(meta_master, pinname);

            return(meta_pin.DataType);
        }
Exemple #4
0
        /// <summary>
        /// 加载表中所有的Meta_FCMaster以及与其相关的Meta_FCDetail
        /// </summary>
        /// <returns></returns>
        public List <Meta_FCMaster> Load_FCMasters()
        {
            IList <Meta_FCMaster> masters = this.session.CreateQuery("from Meta_FCMaster").List <Meta_FCMaster>();
            IList <Meta_FCDetail> details = this.session.CreateQuery("from Meta_FCDetail").List <Meta_FCDetail>();
            Hashtable             table   = new Hashtable();

            foreach (Meta_FCMaster master in masters)
            {
                table[master.ID]          = master;
                master.Meta_FCDetail_List = new MyList(master);
            }

            //双向关联detail和master
            foreach (Meta_FCDetail detail in details)
            {
                if (table.ContainsKey(detail.Meta_FCMaster_ID))
                {
                    Meta_FCMaster temp = (Meta_FCMaster)table[detail.Meta_FCMaster_ID];
                    temp.Meta_FCDetail_List.Add(detail);
                    detail.Meta_FCMaster = temp;
                }
                else
                {
                    continue;
                }
            }

            List <Meta_FCMaster> result = new List <Meta_FCMaster>();

            foreach (Meta_FCMaster m in table.Values)
            {
                result.Add(m);
            }
            return(result);
        }
 /// <summary>
 /// 根据跟定的Meta_FCMaster和PinName得到Pin的元数据,如果找不到,抛出异常
 /// </summary>
 /// <param name="function_name">Function Name</param>
 /// <returns>Meta_FCDetail,元数据,失败抛出异常</returns>
 public Meta_FCDetail get_PinMeta(Meta_FCMaster meta_master, string pinname)
 {
     foreach (Meta_FCDetail detail in meta_master.Meta_FCDetail_List)
     {
         if (detail.PinName.Equals(pinname))
         {
             return(detail);
         }
     }
     throw new Exception("no such " + pinname + " name in " + meta_master.FunctionName);
 }
 /// <summary>
 /// 根据跟定的Meta_FCMaster和PinName得到Pin的元数据,如果找不到,抛出异常
 /// </summary>
 /// <param name="function_name">Function Name</param>
 /// <returns>Meta_FCDetail,元数据,失败抛出异常</returns>
 public Meta_FCDetail get_PinMeta(Meta_FCMaster meta_master, string pinname)
 {
     foreach (Meta_FCDetail detail in meta_master.Meta_FCDetail_List)
     {
         if (detail.PinName.Equals(pinname))
         {
             return detail;
         }
     }
     throw new Exception("no such " + pinname + " name in " + meta_master.FunctionName);
 }
Exemple #7
0
 /// <summary>
 /// 根据ID获得Cld_FCBlock
 /// </summary>
 /// <param name="condition">ID type:int</param>
 /// <returns></returns>
 public Meta_FCMaster GetMeta_FCMaster_By_ID(int condition)
 {
     using (ITransaction transaction = session.BeginTransaction()){
         try{
             Meta_FCMaster result = this.session.Get <Meta_FCMaster>(condition);
             transaction.Commit();
             return(result);
         }catch (Exception e) {
             transaction.Rollback();
             throw e;
         }
     }
 }
Exemple #8
0
        /// <summary>
        /// 加载给定Name的meta_fcmaster以及与其相关的Meta_FCDetail
        /// </summary>
        /// <param name="funcname"></param>
        /// <returns></returns>
        public Meta_FCMaster Load_FCMaster_By_FuncName(string funcname)
        {
            //获得所有符合条件的master
            IList <Meta_FCMaster> masters = this.session.CreateQuery("from Meta_FCMaster as m where m.FunctionName = '" + funcname + "'")
                                            .List <Meta_FCMaster>();

            if (masters.Count == 0)
            {
                throw new Exception("no such Function Name");
            }

            Hashtable table = new Hashtable();

            string querystring = "from Meta_FCDetail as d where ";

            //构造查询sql语句
            foreach (Meta_FCMaster master in masters)
            {
                table[master.ID] = master;
                querystring      = querystring + "d.Meta_FCMaster_ID=" + master.ID + " OR ";
                //分配空间
                master.Meta_FCDetail_List = new ArrayList();
            }

            querystring = querystring.Trim();
            if (querystring.EndsWith("OR"))
            {
                querystring = querystring.Substring(0, querystring.LastIndexOf("OR"));
            }
            IList <Meta_FCDetail> details = this.session.CreateQuery(querystring).List <Meta_FCDetail>();

            //关联detail
            foreach (Meta_FCDetail d in details)
            {
                if (table.ContainsKey(d.Meta_FCMaster_ID))
                {
                    Meta_FCMaster temp = (Meta_FCMaster)table[d.Meta_FCMaster_ID];
                    temp.Meta_FCDetail_List.Add(d);
                    d.Meta_FCMaster = temp;
                }
            }

            if (masters.Count > 1)
            {
                throw new Exception("same function name accures more than one time");
            }

            return(masters[0]);
        }
        /// <summary>
        /// 根据跟定的FunctionName得到元数据,如果找不到,抛出异常
        /// 缓存查询过的
        /// </summary>
        /// <param name="function_name">Function Name</param>
        /// <returns>Meta_FCMaster,元数据,失败抛出异常</returns>
        public Meta_FCMaster get_BlockMeta(string function_name)
        {
            if (funcname_to_MetaFCMaster.ContainsKey(function_name))
            {
                //缓存中存在此function的相关信息,查找缓存
                Meta_FCMaster master_temp = funcname_to_MetaFCMaster[function_name] as Meta_FCMaster;
                return(master_temp);
            }
            //从数据库中加载
            Meta_FCMaster meta_master = this.manager.MetaMasterCRUD.Load_FCMaster_By_FuncName(function_name);

            //添加进缓存
            this.funcname_to_MetaFCMaster[function_name] = meta_master;
            return(meta_master);
        }
Exemple #10
0
 /// <summary>
 /// 默认构造函数
 /// <summary>
 public Meta_FCDetail() : base()
 {
     m_ID               = -1;
     m_FunctionName     = String.Empty;
     m_PinName          = String.Empty;
     m_PinIndex         = -1;
     m_DataType         = String.Empty;
     m_Tune             = false;
     m_PinType          = String.Empty;
     m_MaxValue         = String.Empty;
     m_MinValue         = String.Empty;
     m_ValidValue       = String.Empty;
     m_DefaultValue     = String.Empty;
     m_Required         = false;
     m_Description      = String.Empty;
     m_Fixed            = false;
     m_PinSignalType    = String.Empty;
     m_Meta_FCMaster_ID = -1;
     m_Meta_FCMaster    = null;
 }
					/// <summary>
		/// 默认构造函数
		/// <summary>
		public Meta_FCDetail():base(){
			m_ID = -1;
			m_FunctionName = String.Empty;
			m_PinName = String.Empty;
			m_PinIndex = -1;
			m_DataType = String.Empty;
			m_Tune = false;
			m_PinType = String.Empty;
			m_MaxValue = String.Empty;
			m_MinValue = String.Empty;
			m_ValidValue = String.Empty;
			m_DefaultValue = String.Empty;
			m_Required = false;
			m_Description = String.Empty;
			m_Fixed = false;
			m_PinSignalType = String.Empty;
			m_Meta_FCMaster_ID = -1;
			m_Meta_FCMaster = null;
			
		}