Text
/// <summary> /// Parameter /// </summary> [Serializable] public class Parameter { /// <summary> /// Name /// </summary> public string Name { get; set; } /// <summary> /// DbType /// </summary> public ParameterType Type { get; set; } /// <summary> /// Value /// </summary> public object Value { get; set; } /// <summary> /// Direction /// </summary> public ParameterDirection Direction { get; set; } /// <summary> /// Size /// </summary> public int? Size { get; set; } /// <summary> /// Is nullable /// </summary> public bool IsNullable { get; set; } /// <summary> /// Source column /// </summary> public string SourceColumn { get; set; } /// <summary> /// Source version /// </summary> public DataRowVersion SourceVersion { get; set; } /// <summary> /// Is like. If it's like parameter we must exaluate expression before assigning it /// </summary> public string LikeMask { get; set; } /// <summary> /// Default value /// </summary> public object DefaultValue { get; set; } /// <summary> /// Is required /// </summary> public bool IsRequired { get; set; } /// <summary> /// Parameter. Fix for APPBASEPM-1104 /// </summary> public Parameter() : this(string.Empty) { } /// <summary> /// Constructor /// </summary> public Parameter(string name) : this(name, ParameterType.btype_text, null, ParameterDirection.Input, null) { } /// <summary> /// Constructor /// </summary> public Parameter(string name, ParameterType type) : this(name, type, null, ParameterDirection.Input, null) { } /// <summary> /// Constructor /// </summary> //public Parameter(string name, ParameterType type, object value) // : // this(name, type, null, ParameterDirection.Input, value) //{ //} /// <summary> /// Constructor /// </summary> public Parameter(string name, ParameterType type, ParameterDirection direction) : this(name, type, null, direction, null) { } /// <summary> /// Constructor /// </summary> public Parameter(string name, ParameterType type, ParameterDirection direction, object value) : this(name, type, null, direction, value) { } /// <summary> /// Constructor /// </summary> public Parameter(string name, ParameterType type, int? size, ParameterDirection direction) : this(name, type, size, direction, null) { } /// <summary> /// Constructor /// </summary> public Parameter(string name, ParameterType type, int? size, ParameterDirection direction, object value) { Name = name; Type = type; Direction = direction; Value = value; Size = size; IsNullable = true; SourceVersion = DataRowVersion.Default; } /// <summary> /// Copy to /// </summary> /// <param name="parameter"></param> public void CopyTo(Parameter parameter) { ValidationHelper.ValidateNotNullObject(parameter, "parameter"); parameter.Name = Name; parameter.Type = Type; parameter.DefaultValue = DefaultValue; parameter.Direction = Direction; parameter.IsNullable = IsNullable; parameter.IsRequired = IsRequired; parameter.LikeMask = LikeMask; parameter.Name = Name; parameter.Size = Size; parameter.SourceColumn = SourceColumn; parameter.SourceVersion = SourceVersion; parameter.Value = Value; } } } |
Text
/// <summary> /// Parameter type. Implementation independent type, supported in the platform. /// </summary> [Serializable] public class ParameterType { public static readonly ParameterType btype_text = new ParameterType(SystemType.btype_text); public static readonly ParameterType btype_large_text = new ParameterType(SystemType.btype_large_text); public static readonly ParameterType btype_integer = new ParameterType(SystemType.btype_integer); public static readonly ParameterType btype_number = new ParameterType(SystemType.btype_number); public static readonly ParameterType btype_currency = new ParameterType(SystemType.btype_currency); public static readonly ParameterType btype_picture = new ParameterType(SystemType.btype_picture); public static readonly ParameterType btype_date = new ParameterType(SystemType.btype_date); public static readonly ParameterType btype_time = new ParameterType(SystemType.btype_time); /// <summary> /// System type /// </summary> public SystemType SystemType { get; private set; } /// <summary> /// Check if parameter type is text /// </summary> public bool IsText { get { return SystemType == SystemType.btype_text; } } /// <summary> /// Is large text /// </summary> public bool IsLargeText { get { return SystemType == SystemType.btype_large_text; } } /// <summary> /// Is date time /// </summary> public bool IsDateTime { get { return SystemType == SystemType.btype_date || SystemType == SystemType.btype_time; } } /// <summary> /// Must have size /// </summary> public bool MustHaveSize { get { return SystemType == SystemType.btype_text; } } #region Constructors /// <summary> /// Constructor /// </summary> public ParameterType() : this(SystemType.btype_text) { } /// <summary> /// Constructor /// </summary> /// <param name="systemType"></param> public ParameterType(SystemType systemType) { SystemType = systemType; } /// <summary> /// btype_text /// </summary> /// <returns></returns> public static ParameterType Text() { return new ParameterType(SystemType.btype_text); } /// <summary> /// btype_large_text /// </summary> /// <returns></returns> public static ParameterType LargeText() { return new ParameterType(SystemType.btype_large_text); } /// <summary> /// btype_integer /// </summary> /// <returns></returns> public static ParameterType Integer() { return new ParameterType(SystemType.btype_integer); } /// <summary> /// btype_number /// </summary> /// <returns></returns> public static ParameterType Number() { return new ParameterType(SystemType.btype_number); } /// <summary> /// btype_currency /// </summary> /// <returns></returns> public static ParameterType Currency() { return new ParameterType(SystemType.btype_currency); } /// <summary> /// btype_picture /// </summary> /// <returns></returns> public static ParameterType Picture() { return new ParameterType(SystemType.btype_picture); } /// <summary> /// btype_date /// </summary> /// <returns></returns> public static ParameterType Date() { return new ParameterType(SystemType.btype_date); } /// <summary> /// btype_time /// </summary> /// <returns></returns> public static ParameterType Time() { return new ParameterType(SystemType.btype_time); } /// <summary> /// /// </summary> /// <param name="s"></param> /// <returns></returns> public static ParameterType Parse(string s) { return new ParameterType((SystemType)Enum.Parse(typeof(SystemType), s, true)); } #endregion #region Conversions /// <summary> /// To sql server db type /// </summary> /// <returns></returns> public SqlDbType ToSqlServerDbType() { switch (SystemType) { case SystemType.btype_text: return SqlDbType.NVarChar; case SystemType.btype_large_text: return SqlDbType.NVarChar; case SystemType.btype_integer: return SqlDbType.Int; case SystemType.btype_number: return SqlDbType.Decimal; case SystemType.btype_currency: return SqlDbType.Decimal; case SystemType.btype_picture: return SqlDbType.Image; case SystemType.btype_date: return SqlDbType.Date; case SystemType.btype_time: return SqlDbType.DateTime; default: return SqlDbType.NVarChar; } } /// <summary> /// To oracle server db type /// </summary> /// <returns></returns> public OracleDbType ToOracleDbType() { switch (SystemType) { case SystemType.btype_text: return OracleDbType.NVarchar2; case SystemType.btype_large_text: return OracleDbType.NClob; case SystemType.btype_integer: return OracleDbType.Int32; case SystemType.btype_number: return OracleDbType.Decimal; case SystemType.btype_currency: return OracleDbType.Decimal; case SystemType.btype_picture: return OracleDbType.Blob; case SystemType.btype_date: return OracleDbType.Date; case SystemType.btype_time: return OracleDbType.Date; default: return OracleDbType.NVarchar2; } } /// <summary> /// To oracle db type (specific to DDL statements), e.g. nvarchar2, number, etc /// </summary> /// <returns></returns> public string ToOracleDbTypeWithoutScaleAsString() { switch (SystemType) { case SystemType.btype_text: return "nvarchar2"; case SystemType.btype_large_text: return "nclob"; case SystemType.btype_integer: return "number"; case SystemType.btype_number: return "number"; case SystemType.btype_currency: return "number"; case SystemType.btype_picture: return "blob"; case SystemType.btype_date: return "date"; case SystemType.btype_time: return "date"; default: return "nvarchar2"; } } /// <summary> /// To db type /// </summary> /// <returns></returns> public DbType ToDbType() { switch (SystemType) { case SystemType.btype_text: return DbType.String; case SystemType.btype_large_text: return DbType.String; case SystemType.btype_integer: return DbType.Int32; case SystemType.btype_number: return DbType.Decimal; case SystemType.btype_currency: return DbType.Decimal; case SystemType.btype_picture: return DbType.Binary; case SystemType.btype_date: return DbType.Date; case SystemType.btype_time: return DbType.DateTime; //case SystemType.btype_picklist: // return DbType.String; //case SystemType.btype_picklist_number: // return DbType.Int32; default: return DbType.String; } } /// <summary> /// To clr type /// </summary> /// <returns></returns> public Type ToClrType() { switch (SystemType) { case SystemType.btype_text: return typeof(string); case SystemType.btype_large_text: return typeof(string); case SystemType.btype_integer: return typeof(int); case SystemType.btype_number: return typeof(decimal); case SystemType.btype_currency: return typeof(decimal); case SystemType.btype_picture: return typeof(byte[]); case SystemType.btype_date: return typeof(DateTime); case SystemType.btype_time: return typeof(TimeSpan); //case SystemType.btype_picklist: // return typeof(string); //case SystemType.btype_picklist_number: // return typeof(int); default: return typeof(string); } } /// <summary> /// Get column type specific sql as string /// </summary> /// <param name="length"></param> /// <param name="precision"></param> /// <param name="scale"></param> /// <returns></returns> public string GetOracleColumnTypeDeclaration(int? length, int? precision, int? scale) { const int defaultLength = 255; const int defaultPrecision = 18; const int defaultScale = 2; var x = ToOracleDbTypeWithoutScaleAsString(); switch (SystemType) { case SystemType.btype_text: return string.Format("{0}({1})", x, length > 0 ? length : defaultLength); case SystemType.btype_number: case SystemType.btype_currency: return string.Format("{0}({1},{2})", x, precision > 0 ? precision : defaultPrecision, scale > 0 ? scale : defaultScale); default: return x; } } #endregion #region ParameterType Members /// <summary> /// Equals /// </summary> /// <param name="obj"></param> /// <returns></returns> public override bool Equals(object obj) { var pt = obj as ParameterType; if (pt == null) { return false; } return pt.SystemType == SystemType; } /// <summary> /// To string /// </summary> /// <returns></returns> public override string ToString() { return SystemType.ToString(); } /// <summary> /// Get hash code /// </summary> /// <returns></returns> public override int GetHashCode() { return SystemType.GetHashCode(); } #endregion } /// <summary> /// System type /// </summary> public enum SystemType { btype_text, btype_large_text, btype_integer, btype_number, btype_currency, btype_picture, btype_date, btype_time, } |