From: Peter S. <sz...@us...> - 2004-04-21 14:35:29
|
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() { |