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();
}
}
}