Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Type
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5925/NHibernate/Type
Modified Files:
TypeFactory.cs
Added Files:
TimeSpanType.cs
Log Message:
Added timespan.
--- NEW FILE: TimeSpanType.cs ---
using System;
using System.Data;
using NHibernate.SqlTypes;
namespace NHibernate.Type
{
/// <summary>
/// Maps a System.Timespan Property to an Int64 column
/// </summary>
public class TimeSpanType : MutableType, IVersionType, ILiteralType
{
public TimeSpanType(Int64SqlType sqlType) : base(sqlType)
{
}
public override object Get(IDataReader rs, int index)
{
return new DateTime(rs.GetInt64(index));
}
public override object Get(IDataReader rs, string name)
{
return Get(rs, rs.GetOrdinal(name));// rs.[name];
}
public override System.Type ReturnedClass
{
get { return typeof(TimeSpan); }
}
public override void Set(IDbCommand st, object value, int index)
{
IDataParameter parm = st.Parameters[index] as IDataParameter;
parm.Value = ((TimeSpan)value).Ticks;
}
public override string Name
{
get { return "TimeSpan"; }
}
public override string ToXML(object val)
{
return ((TimeSpan)val).Ticks.ToString();
}
public override object DeepCopyNotNull(object value)
{
return value;
}
public override bool Equals(object x, object y)
{
if (x==y) return true;
if (x==null || y==null) return false;
long xTime = ((TimeSpan)x).Ticks;
long yTime = ((TimeSpan)y).Ticks;
return xTime == yTime;
}
public override bool HasNiceEquals
{
get { return true; }
}
public object Next(object current)
{
return Seed;
}
public object Seed
{
get { return DateTime.Now.Ticks; }
}
public string ObjectToSQLString(object value)
{
return "'" + ((TimeSpan)value).Ticks.ToString() + "'";
}
}
}
Index: TypeFactory.cs
===================================================================
RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/TypeFactory.cs,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** TypeFactory.cs 20 Apr 2004 15:51:24 -0000 1.26
--- TypeFactory.cs 21 Apr 2004 14:33:07 -0000 1.27
***************
*** 107,110 ****
--- 107,111 ----
TypeFactory.GetYesNoType();
TypeFactory.GetTicksType();
+ TypeFactory.GetTimeSpanType();
getTypeDelegatesWithLength.Add(TypeFactory.GetBinaryType().Name, new GetNullableTypeWithLength(GetBinaryType));
***************
*** 883,886 ****
--- 884,907 ----
/// </summary>
/// <returns></returns>
+ public static NullableType GetTimeSpanType()
+ {
+
+ string key = typeof(TimeSpanType).FullName;
+
+ NullableType returnType = (NullableType)typeByTypeOfName[key];
+ if(returnType==null)
+ {
+ returnType = new TimeSpanType(SqlTypeFactory.GetInt64());
+ AddToTypeOfName(key, returnType);
+ }
+
+ return returnType;
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
public static NullableType GetTimestampType()
{
|