using System;
using System.Xml;
using System.Xml.Serialization;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Diagnostics;
using System.Runtime;
using System.Runtime.Serialization;
using Tdo;
using Tdo.Common;
using Tdo.Common.Entities;
using Tdo.Common.Entities.Tables;
using Tdo.Common.Entities.Views;
using Tdo.Common.Helper;
using Tdo.Common.TdoSqlExpressionDom;
using Tdo.Common.TdoTypes;
namespace Tdo.Common.TdoTypes{
/// <summary>
/// TdoString class. Allows to keep values of SqlString types.
/// </summary>
[CLSCompliant(true)]
[Serializable()]
public sealed class TdoString : TdoTypeBase<SqlString>, ITdoColumn
{
#region Constructors
/// <summary>
/// Default constructor for TdoString Class
/// </summary>
public TdoString()
{
this.actualValue = SqlString.Null;
}
/// <summary>
/// Constructor for TdoString Class.
/// </summary>
/// <param name="value">Column constant value</param>
/// <param name="columnAlias">Alias column.</param>
public TdoString(SqlString value, string columnAlias)
{
this.Caption = this.ColumnName = columnAlias;
this.actualValue = TdoString.ClonedValue(value);
this.IsConstant = true;
}
/// <summary>
/// Constructor for TdoString class
/// </summary>
/// <param name="allowDBNull">Boolean that indicates wether the field can be NULL</param>
/// <param name="autoIncrement">Boolean that indicates if the field is IDENTITY (auto-increase)</param>
/// <param name="autoIncrementSeed">Long that indicates how much is increasing the IDENTITY field</param>
/// <param name="autoIncrementStep">Long that indicates the start actualValue of the IDENTITY field </param>
/// <param name="caption">String that indicates the heading/columnAlias of the field</param>
/// <param name="columnName">String that indicates the name of the column (field)</param>
/// <param name="maxLength">Integer that indicates the maximum length of the field (-1,field without limit)</param>
/// <param name="readOnly">Boolean that indicates if the field is only reading</param>
/// <param name="unique">Boolean that indicates if a unique constraint exists on that field</param>
/// <param name="tdoEntity">TdoEntity referenced to the class that contains the field</param>
public TdoString(bool allowDBNull, bool autoIncrement, long autoIncrementSeed,
long autoIncrementStep, string caption, string columnName,
int maxLength, bool readOnly,
bool unique, ITdoEntity tdoEntity)
:
base(allowDBNull, autoIncrement, autoIncrementSeed,
autoIncrementStep, caption, columnName, maxLength,
readOnly,
unique, tdoEntity)
{
this.actualValue = SqlString.Null;
}
#endregion Constructors
#region Properties
/// <summary>
/// Get or Set Value property of Object type
/// </summary>
[XmlIgnore]
public override object ObjectValue
{
get
{
return this.actualValue;
}
set
{
if (value != null && value != DBNull.Value)
this.actualValue = new SqlString((String)value);
else
this.actualValue = SqlString.Null;
this.pModified = !this.ReadOnly;
}
}
/// <summary>
/// System.Data.SqlDbType of ITdoColumn
/// </summary>
[XmlAttribute()]
public override SqlDbType SqlDbType
{
get
{
return System.Data.SqlDbType.NVarChar;
}
}
#endregion Properties
#region Methods
/// <summary>
/// Comparison operator Equals
/// </summary>
/// <param name="obj">Object to compare</param>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration")]
public override bool Equals(object obj)
{
return base.Equals(obj);
}
/// <summary>
/// Returns Hash code
/// </summary>
public override int GetHashCode()
{
return base.GetHashCode();
}
internal override SqlString ClonedValue(bool actualValue)
{
return (actualValue ? TdoString.ClonedValue(this.actualValue) : TdoString.ClonedValue(this.oldValue));
}
/// <summary>
/// Return a copy of SqlString structure
/// </summary>
/// <param name="toClone">SqlString to copy</param>
/// <returns>SqlString structure copied</returns>
public static SqlString ClonedValue(SqlString toClone)
{
return toClone.Clone();
}
/// <summary>
/// Creates a copy of this TdoString object.
/// </summary>
/// <returns></returns>
public override ITdoType<SqlString> Clone()
{
TdoString clone = new TdoString(this.pAllowDBNull, this.pAutoIncrement, this.pAutoIncrementSeed, this.pAutoIncrementStep, this.pCaption, this.pColumnName, this.pMaxLength, this.pReadOnly, this.pUnique, this.pTdoEntity);
clone.Value = this.ClonedValue();
return clone;
}
/// <summary>
/// Returns the string representation of the content of the field
/// </summary>
/// <returns>string</returns>
public override string ToString()
{
//TODO: Ridefinire per alcuni tipi ... tipo Binary
return this.Value.ToString();
}
#endregion Methods
#region Operators
/// <summary>
/// Comparison operator Equal
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator ==(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Equal, right);
}
/// <summary>
/// Comparison operator Equal
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator ==(TdoString left, ITdoType<SqlString> right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Equal, right);
}
/// <summary>
/// Comparison operator is (null)
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator ==(TdoString left, DBNull right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Equal, right);
}
/// <summary>
/// Comparison operator BetWeen
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="range">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator ==(TdoString left, TdoWhereRange range)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Between, range);
}
/// <summary>
/// Comparison operator IN
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="setOfValues">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator ==(TdoString left, TdoWheresetOfValues setOfValues)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.In, new TdoWheresetOfValues(setOfValues.setOfValues));
}
/// <summary>
/// Comparison operator IN
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="setOfValues">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator ==(TdoString left, object[] setOfValues)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.In, new TdoWheresetOfValues(setOfValues));
}
/// <summary>
/// Comparison operator Greater
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator >(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Greater, right);
}
/// <summary>
/// Comparison operator Greater
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator >(TdoString left, ITdoType<SqlString> right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Greater, right);
}
/// <summary>
/// Comparison operator Greater or Equal
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator >=(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.GreaterOrEqual, right);
}
/// <summary>
/// Comparison operator Greater or Equal
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator >=(TdoString left, ITdoType<SqlString> right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.GreaterOrEqual, right);
}
/// <summary>
/// Comparison operator Lower
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator <(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Lower, right);
}
/// <summary>
/// Comparison operator Lower
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator <(TdoString left, ITdoType<SqlString> right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Lower, right);
}
/// <summary>
/// Comparison operator Lower or Equal
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator <=(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.LowerOrEqual, right);
}
/// <summary>
/// Comparison operator Lower or Equal
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator <=(TdoString left, ITdoType<SqlString> right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.LowerOrEqual, right);
}
/// <summary>
/// Comparison operator NOT IN
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="setOfValues">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator !=(TdoString left, TdoWheresetOfValues setOfValues)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotIn, new TdoWheresetOfValues(setOfValues.setOfValues));
}
/// <summary>
/// Comparison operator NotEqual
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator !=(TdoString left, ITdoType<SqlString> right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotEqual, right);
}
/// <summary>
/// Comparison operator NOT IN
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="setOfValues">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator !=(TdoString left, object[] setOfValues)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotIn, new TdoWheresetOfValues(setOfValues));
}
/// <summary>
/// Comparison operator Like
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator %(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Like, right);
}
/// <summary>
/// Comparison operator Not Like
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator -(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotLike, right);
}
/// <summary>
/// Comparison operator Not BetWeen
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="range">range on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator !=(TdoString left, TdoWhereRange range)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotBetween, range);
}
/// <summary>
/// Comparison operator NotEqual
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator !=(TdoString left, string right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotEqual, right);
}
/// <summary>
/// Comparison operator is not (null)
/// </summary>
/// <param name="left">Parameter on the left of the operator</param>
/// <param name="right">Parameter on the right of the operator</param>
/// <returns>Returns an expression like TdoSqlExpression useful to convert the where clause to string</returns>
public static TdoSqlExpression operator !=(TdoString left, DBNull right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotEqual, right);
}
#endregion Operators
}
}
|