using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Text; namespace Ems.BusinessTracker.Common { public class QueryParamObj { internal void ClearAllValues() { paramName = string.Empty; dbType = DbType.String; paramValue = null; paramDirection = ParameterDirection.Input; paramLen = 0; } /// /// Parameter name /// private string paramName; public string ParamName { get { return paramName; } set { paramName = value; } } /// /// Type of parameter /// private DbType dbType = DbType.String; public DbType DBType { get { return dbType; } set { dbType = value; } } /// /// Type of parameter /// private SqlDbType sqldbType = SqlDbType.Text; public SqlDbType SqlDbType { get { return sqldbType; } set { sqldbType = value; } } /// /// Value for the parameter /// private object paramValue; public object ParamValue { get { return paramValue; } set { paramValue = value; } } private int paramLen; public int ParamLen { get { return paramLen; } set { paramLen = value; } } /// /// Direction in out /// private ParameterDirection paramDirection = ParameterDirection.Input; public ParameterDirection ParamDirection { get { return paramDirection; } set { paramDirection = value; } } /// /// Constructors /// public QueryParamObj() { } public QueryParamObj(string paramName, object paramValue) { this.ParamName = paramName; this.ParamValue = paramValue; } public QueryParamObj(string paramName, DbType dbType, object paramValue) { this.ParamName = paramName; this.DBType = dbType; this.ParamValue = paramValue; } public QueryParamObj(string paramName, SqlDbType dbType, object paramValue) { this.ParamName = paramName; this.SqlDbType = dbType; this.ParamValue = paramValue; } public QueryParamObj(string paramName, DbType dbType, object paramValue, ParameterDirection paramDirection) { this.ParamName = paramName; this.DBType = dbType; this.ParamValue = paramValue; this.ParamDirection = paramDirection; } public QueryParamObj(string paramName, DbType dbType, object paramValue, ParameterDirection paramDirection, int pParamLen) { this.ParamName = paramName; this.DBType = dbType; this.ParamValue = paramValue; this.ParamDirection = paramDirection; this.ParamLen = pParamLen; } } public class QueryParamList : Collection { public QueryParamList() : base() { } /// /// returns param at position /// /// /// public QueryParamObj ParamAt(int ndx) { if (this.Count > ndx) { int i = 0; foreach (QueryParamObj obj in this) { if (i++ == ndx) return obj; } } return null; } /// /// Adds param to collection /// /// /// public QueryParamObj AddParam(string paramName) { QueryParamObj obj = new QueryParamObj(); obj.ParamName = paramName; this.Add(obj); return obj; } /// /// Adds param to collection /// /// /// /// public QueryParamObj AddParam(string paramName, object paramValue) { QueryParamObj obj = new QueryParamObj(paramName, paramValue); this.Add(obj); return obj; } /// /// Adds param to collection /// /// /// /// /// public QueryParamObj AddParam(string paramName, DbType dbType, object paramValue) { QueryParamObj obj = new QueryParamObj(paramName, dbType, paramValue); this.Add(obj); return obj; } /// /// Adds param to collection /// /// /// /// /// /// public QueryParamObj AddParam(string paramName, DbType dbType, object paramValue, ParameterDirection paramDirection) { QueryParamObj obj = new QueryParamObj(paramName, dbType, paramValue, paramDirection); this.Add(obj); return obj; } public QueryParamObj AddOutputParam(string paramName, DbType dbType, int pParamLen) { QueryParamObj obj = new QueryParamObj(paramName, dbType, null, ParameterDirection.Output, pParamLen); this.Add(obj); return obj; } /// /// returns param from collection /// /// /// public QueryParamObj Item(string paramName) { foreach (QueryParamObj obj in this) { if (obj.ParamName.ToLower().Equals(paramName.ToLower())) return obj; } return null; } /// /// To determine if char is in set of chars /// /// /// /// private static bool InSet(char[] pDelimeter, char c) { bool result = false; foreach (char ch in pDelimeter) { if (c.Equals(ch)) { result = true; break; } } return result; } /// /// Removes chars from string /// /// /// /// public static string StripCharSet(char[] pDelimeter, string pStr) { string result = null; if (!String.IsNullOrEmpty(pStr)) { StringBuilder buildStr = new StringBuilder(); foreach (char c in pStr) { if (!InSet(pDelimeter, c)) { buildStr.Append(c); } } result = buildStr.ToString(); } return result; } public QueryParamObj ItemIgnoreAtSign(string paramName) { foreach (QueryParamObj obj in this) { string s = obj.ParamName.ToLower(); s = StripCharSet(new char[] { '@' }, s); if (s.Equals(paramName.ToLower())) return obj; } return null; } protected override void RemoveItem(int index) { base.RemoveItem(index); } protected override void ClearItems() { base.ClearItems(); } } }