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>
/// TdoDateTime class. Allows to keep SqlDateTime actualValue type
/// </summary>
[CLSCompliant(true)]
[Serializable()]
public sealed class TdoDateTime : TdoTypeBase<SqlDateTime>, ITdoColumn
{
#region Constructors
/// <summary>
/// Default constructor for TdoDateTime Class
/// </summary>
public TdoDateTime()
{
this.actualValue = SqlDateTime.Null;
}
/// <summary>
/// Constructor for TdoDateTime Class.
/// </summary>
/// <param name="value">Column constant value</param>
/// <param name="columnAlias">Alias column.</param>
public TdoDateTime(SqlDateTime value, string columnAlias)
{
this.Caption = this.ColumnName = columnAlias;
this.actualValue = TdoDateTime.ClonedValue(value);
this.IsConstant = true;
}
/// <summary>
/// Constructor for TdoDateTime 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 TdoDateTime(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 = SqlDateTime.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 SqlDateTime((DateTime)value);
else
this.actualValue = SqlDateTime.Null;
this.pModified = !this.ReadOnly;
}
}
/// <summary>
/// System.Data.SqlDbType of ITdoColumn
/// </summary>
[XmlAttribute()]
public override SqlDbType SqlDbType
{
get
{
return System.Data.SqlDbType.DateTime;
}
}
#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 SqlDateTime ClonedValue(bool actualValue)
{
return (actualValue ? TdoDateTime.ClonedValue(this.actualValue) : TdoDateTime.ClonedValue(this.oldValue));
}
/// <summary>
/// Return a copy of SqlDateTime structure
/// </summary>
/// <param name="toClone">SqlDateTime to copy</param>
/// <returns>SqlDateTime structure copied</returns>
public static SqlDateTime ClonedValue(SqlDateTime toClone)
{
SqlDateTime res;
if (toClone.IsNull)
{
res = SqlDateTime.Null;
}
else
{
res = new SqlDateTime(toClone.Value);
}
return res;
}
/// <summary>
/// Creates a copy of this TdoString object.
/// </summary>
/// <returns></returns>
public override ITdoType<SqlDateTime> Clone()
{
TdoDateTime clone = new TdoDateTime(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 Equals
/// </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 ==(TdoDateTime left, DateTime right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.Equal, right);
}
/// <summary>
/// Comparison operator Equals
/// </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 ==(TdoDateTime left, ITdoColumn 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 ==(TdoDateTime 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 ==(TdoDateTime 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 ==(TdoDateTime 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 ==(TdoDateTime 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 >(TdoDateTime left, DateTime 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 >(TdoDateTime left, ITdoColumn 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 >=(TdoDateTime left, DateTime 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 >=(TdoDateTime left, ITdoColumn 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 <(TdoDateTime left, DateTime 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 <(TdoDateTime left, ITdoColumn 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 <=(TdoDateTime left, DateTime 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 <=(TdoDateTime left, ITdoColumn 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 !=(TdoDateTime 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 !=(TdoDateTime left, ITdoColumn 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 !=(TdoDateTime left, object[] setOfValues)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotIn, new TdoWheresetOfValues(setOfValues));
}
/// <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 !=(TdoDateTime 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 !=(TdoDateTime left, DateTime 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 !=(TdoDateTime left, DBNull right)
{
return new TdoSqlExpression((ITdoColumn)left, SqlOperator.NotEqual, right);
}
#endregion Operators
}
}
|