/// <summary> /// ��������Ϣ�������� /// </summary> /// <param name="parent">���������������ֻ��һ����ϵʹ��0</param> /// <param name="serialIndex">����ϵ�У�������ǵڼ����������������Ӷ���������ϣ�</param> /// <param name="subIndex">����������������Ƕ������е�ÿһ������������</param> /// <param name="name">��������</param> /// <param name="value">����ֵ��Ŀǰֻ֧��int, string, float, double, decimal, DateTime�⼸�ֻ�����������</param> internal NotificationParam(int notifyId, NotificationParam parent, int serialIndex, int subIndex, string name, object value) { this._parent = parent; this.NotifyID = notifyId; this.ParentID = parent == null ? 0 : parent.ParamID; this.SerialIndex = serialIndex; this.SubIndex = subIndex; this.ParamName = name; if (value == null) { this.DataType = NotificationDataType.String; this.ParamValue = null; } else if (value is IList<NotificationParam> || value is NotificationParam[]) { //�������ΪNotificationParam���ϣ������Ӳ㼶��ϵ //TODO: �ݲ�֧��ֱ�Ӵ���NotificationParam���ϴ���NotificationParam���� } else if (value is NotificationParam) { this.DataType = (value as NotificationParam).DataType; this.ParamValue = (value as NotificationParam).ParamValue; } else { //����Ļ�����������Ϊint, decimal, float, double, string, datetime switch (value.GetType().Name) { case "Int32": case "Int16": this.DataType = NotificationDataType.Int; this.ParamValue = Cast.Int(value, 0).ToString(); break; case "Single": case "Double": case "Decimal": this.DataType = NotificationDataType.Decimal; this.ParamValue = Cast.Decimal(value, 0M).ToString("#0.##"); break; case "DateTime": this.DataType = NotificationDataType.DateTime; this.ParamValue = Cast.DateTime(value, new DateTime(1900, 1, 1)).ToString("yyyy-MM-dd HH:mm").TrimEnd(":00".ToCharArray()).Trim(); break; default: this.DataType = NotificationDataType.String; this.ParamValue = value.ToString().Trim(); break; } } }
/// <summary> /// ����������Ϣ�������� /// </summary> /// <param name="parent">���������������ֻ��һ����ϵʹ��0</param> /// <param name="serialIndex">����ϵ�У�������ǵڼ����������������Ӷ���������ϣ�</param> /// <param name="subIndex">����������������Ƕ������е�ÿһ������������</param> /// <param name="name">��������</param> internal NotificationParam(ISession session, int notifyId, NotificationParam parent, int serialIndex, int subIndex, string name) { this._session = session; this._parent = parent; this.NotifyID = notifyId; this.ParentID = parent == null ? 0 : parent.ParamID; this.SerialIndex = serialIndex; this.SubIndex = subIndex; this.ParamName = name; this.DataType = NotificationDataType.ListOfNotificationParam; this.ParamValue = null; }
/// <summary> /// ��Ӽ��� /// </summary> /// <param name="name">��������</param> /// <param name="value">����ֵ��������int, string, float, double, decimal, DateTime����</param> /// <returns>������Ϣ����������</returns> public NotificationParam AddSingleParam(string name, object value) { this.IsListParam(); NotificationParam param = new NotificationParam(this.NotifyID, this, this._childSerial, this._childIndex++, name, value); param.Create(this._session); return this; }
/// <summary> /// ��Ӽ��ϲ��� /// </summary> /// <param name="name">���ϲ�����</param> /// <returns>����ӵļ��ϲ�������</returns> public NotificationParam AddListParam(string name) { this.IsListParam(); NotificationParam param = new NotificationParam(this._session, this.NotifyID, this, this._childSerial, this._childIndex++, name); param.Create(this._session); return param; }
private object BuildParam(NotificationParam param) { if (param.DataType != NotificationDataType.ListOfNotificationParam) { log.DebugFormat("build single param, name: {0}, value: {1} ", param.ParamName, param.ParamValue); return param.ParamValue; } log.DebugFormat("build list param, name: {0}", param.ParamName, param.ParamValue); IList<IDictionary<string, object>> result = new List<IDictionary<string, object>>(); System.Data.DataSet ds = this._session.CreateObjectQuery(@"select distinct SerialIndex from NotificationParam where ParentID=?pid order by SerialIndex") .Attach(typeof(NotificationParam)) .SetValue("?pid", param.ParamID, "ParentID") .DataSet(); foreach (System.Data.DataRow row in ds.Tables[0].Rows) { IDictionary<string, object> paramList = new Dictionary<string, object>(); IList<NotificationParam> notifyParams = this._session.CreateEntityQuery<NotificationParam>() .Where(Exp.Eq("ParentID", param.ParamID) & Exp.Eq("SerialIndex", row[0])) .OrderBy("SubIndex") .List<NotificationParam>(); log.DebugFormat("serial: {0}, param count: {1}", row[0], notifyParams.Count); foreach (NotificationParam p in notifyParams) paramList.Add(p.ParamName, BuildParam(p)); result.Add(paramList); } return result; }
/// <summary> /// ��Ӽ��� /// </summary> /// <param name="name">��������</param> /// <param name="value">����ֵ��������int, string, float, double, decimal, DateTime����</param> /// <returns>��Ϣ֪ͨ������</returns> public Notification AddSingleParam(string name, object value) { NotificationParam param = new NotificationParam(this.NotifyID, null, 1, this._subIndex++, name, value); param.Create(this._session); return this; }
/// <summary> /// ��Ӽ��ϲ��� /// </summary> /// <param name="name">���ϲ�����</param> /// <returns>����ӵļ��ϲ�������</returns> public NotificationParam AddListParam(string name) { NotificationParam param = new NotificationParam(this._session, this.NotifyID, null, 1, this._subIndex++, name); param.Create(this._session); return param; }