Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Type
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10155/Type
Modified Files:
TypeFactory.cs
Added Files:
AnsiStringType.cs
Log Message:
Added AnsiStringType so there could be a mapping to a varchar column.
Index: TypeFactory.cs
===================================================================
RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/TypeFactory.cs,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** TypeFactory.cs 29 Apr 2004 14:00:54 -0000 1.29
--- TypeFactory.cs 30 Apr 2004 18:39:47 -0000 1.30
***************
*** 23,27 ****
/// a reference to the IType.
/// </remarks>
-
public class TypeFactory
{
--- 23,26 ----
***************
*** 85,88 ****
--- 84,88 ----
//basicTypes.Add(NHibernate.Timezone.Name, NHibernate.Timezone);
+ TypeFactory.GetAnsiStringType();
TypeFactory.GetBinaryType();
TypeFactory.GetBooleanType();
***************
*** 109,112 ****
--- 109,113 ----
TypeFactory.GetTimeSpanType();
+ getTypeDelegatesWithLength.Add(TypeFactory.GetAnsiStringType().Name, new GetNullableTypeWithLength(GetAnsiStringType));
getTypeDelegatesWithLength.Add(TypeFactory.GetBinaryType().Name, new GetNullableTypeWithLength(GetBinaryType));
getTypeDelegatesWithLength.Add(TypeFactory.GetDoubleType().Name, new GetNullableTypeWithLength(GetDoubleType));
***************
*** 381,384 ****
--- 382,413 ----
}
+ public static NullableType GetAnsiStringType()
+ {
+ string key = typeof(AnsiStringType).FullName;
+
+ NullableType returnType = (NullableType)typeByTypeOfName[key];
+ if(returnType==null)
+ {
+ returnType = GetAnsiStringType(255);
+ AddToTypeOfName(key, returnType);
+ }
+
+ return returnType;
+ }
+
+ public static NullableType GetAnsiStringType(int length)
+ {
+ string key = GetKeyForLengthBased(typeof(AnsiStringType).FullName, length);
+
+ NullableType returnType = (NullableType)typeByTypeOfName[key];
+ if(returnType==null)
+ {
+ returnType = new AnsiStringType(SqlTypeFactory.GetAnsiString(length));
+ AddToTypeOfNameWithLength(key, returnType);
+ }
+ return returnType;
+ }
+
+
/// <summary>
/// Gets the BinaryType with the default size.
--- NEW FILE: AnsiStringType.cs ---
using System;
using System.Data;
using NHibernate.SqlTypes;
using NHibernate.Util;
namespace NHibernate.Type
{
/// <summary>
/// Maps a <see cref="System.String"/> Property
/// to a <see cref="DbType.AnsiString"/> column.
/// </summary>
public class AnsiStringType : ImmutableType, IDiscriminatorType
{
internal AnsiStringType(AnsiStringSqlType sqlType) : base(sqlType) {}
public override object Get(IDataReader rs, int index)
{
return rs.GetString(index);
}
public override object Get(IDataReader rs, string name)
{
return Get(rs, rs.GetOrdinal(name));
}
public override System.Type ReturnedClass
{
get { return typeof(string); }
}
public override void Set(IDbCommand st, object value, int index)
{
IDataParameter parm = st.Parameters[index] as IDataParameter;
parm.Value = value;
}
public override string Name
{
get { return "AnsiString"; }
}
public string ObjectToSQLString(object value)
{
return "'" + (string) value + "'";
}
public object StringToObject(string xml)
{
return xml;
}
public override bool Equals(object x, object y)
{
return ObjectUtils.Equals(x, y);
}
public override string ToXML(object value)
{
return (string) value;
}
}
}
|