From 6d751411b7f996c486052c8cbbdbe1e186cebd9f Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Mon, 14 Jan 2008 22:34:19 +0000 Subject: * Added specialization of DatabaseMapper, DataReader and ObjectFieldMapper to support LLVector3, LLQuaternion and LLUUID * Added PrimitiveBaseShapeTableMapper to show how it's done NOTE: Nothing actually works yet - this code should be considered more of educational value until it's all wired together --- .../TribalMedia.Framework.Data/DataReader.cs | 25 +---------- .../TribalMedia.Framework.Data/DatabaseMapper.cs | 8 +++- .../TribalMedia.Framework.Data/FieldMapper.cs | 52 ++-------------------- .../ObjectTableMapper.cs | 2 - .../TribalMedia.Framework.Data/TableMapper.cs | 9 +++- 5 files changed, 18 insertions(+), 78 deletions(-) (limited to 'ThirdParty') diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DataReader.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DataReader.cs index 6f84d43..4792e9e 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DataReader.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DataReader.cs @@ -61,29 +61,6 @@ namespace TribalMedia.Framework.Data return (sbyte) m_source.GetInt16(m_source.GetOrdinal(name)); } - //public Vector3 GetVector(string s) - //{ - // float x = GetFloat(s + "X"); - // float y = GetFloat(s + "Y"); - // float z = GetFloat(s + "Z"); - - // Vector3 vector = new Vector3(x, y, z); - - // return vector; - //} - - //public Quaternion GetQuaternion(string s) - //{ - // float x = GetFloat(s + "X"); - // float y = GetFloat(s + "Y"); - // float z = GetFloat(s + "Z"); - // float w = GetFloat(s + "W"); - - // Quaternion quaternion = new Quaternion(x, y, z, w); - - // return quaternion; - //} - public float GetFloat(string name) { return m_source.GetFloat(m_source.GetOrdinal(name)); @@ -134,7 +111,7 @@ namespace TribalMedia.Framework.Data return m_source.Read(); } - internal Guid GetGuid(string name) + public Guid GetGuid(string name) { string guidString = GetString(name); if (String.IsNullOrEmpty(guidString)) diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DatabaseMapper.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DatabaseMapper.cs index 0b9d16d..63e59aa 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DatabaseMapper.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/DatabaseMapper.cs @@ -41,7 +41,6 @@ namespace TribalMedia.Framework.Data } public abstract DbConnection GetNewConnection(); - public abstract string CreateParamName(string fieldName); public DbCommand CreateSelectCommand(TableMapper mapper, DbConnection connection, string fieldName, object key) @@ -67,7 +66,7 @@ namespace TribalMedia.Framework.Data DbParameter param = command.CreateParameter(); param.ParameterName = keyFieldParamName; - param.Value = FieldMapper.ConvertToDbType(key); + param.Value = ConvertToDbType(key); command.Parameters.Add(param); return String.Format("{0}={1}", fieldName, keyFieldParamName); @@ -131,5 +130,10 @@ namespace TribalMedia.Framework.Data return command; } + + public virtual object ConvertToDbType(object value) + { + return value; + } } } \ No newline at end of file diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/FieldMapper.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/FieldMapper.cs index a1fafbe..89bc0f0 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/FieldMapper.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/FieldMapper.cs @@ -78,52 +78,18 @@ namespace TribalMedia.Framework.Data command.Parameters.Add(param); } - public void ExpandField(TObj obj, DbCommand command, List fieldNames) + public virtual void ExpandField(TObj obj, DbCommand command, List fieldNames) { string fieldName = FieldName; object value = GetParamValue(obj); - //if (ValueType == typeof (Vector3)) - //{ - // Vector3 vector = (Vector3) value; - - // RawAddParam(command, fieldNames, fieldName + "X", vector.X); - // RawAddParam(command, fieldNames, fieldName + "Y", vector.Y); - // RawAddParam(command, fieldNames, fieldName + "Z", vector.Z); - //} - //else if (ValueType == typeof (Quaternion)) - //{ - // Quaternion quaternion = (Quaternion) value; - - // RawAddParam(command, fieldNames, fieldName + "X", quaternion.X); - // RawAddParam(command, fieldNames, fieldName + "Y", quaternion.Y); - // RawAddParam(command, fieldNames, fieldName + "Z", quaternion.Z); - // RawAddParam(command, fieldNames, fieldName + "W", quaternion.W); - //} - //else - //{ - RawAddParam(command, fieldNames, fieldName, ConvertToDbType(value)); - //} + RawAddParam(command, fieldNames, fieldName, m_tableMapper.ConvertToDbType(value)); } - protected object GetValue(DataReader reader) + protected virtual object GetValue(DataReader reader) { object value; - //if (ValueType == typeof (Vector3)) - //{ - // value = reader.GetVector(m_fieldName); - //} - //else if (ValueType == typeof (Quaternion)) - //{ - // value = reader.GetQuaternion(m_fieldName); - //} - //else - //if (ValueType == typeof(UID)) - //{ - // Guid guid = reader.GetGuid(m_fieldName); - // value = new UID(guid); - //} - //else + if (ValueType == typeof(Guid)) { value = reader.GetGuid(m_fieldName); @@ -162,16 +128,6 @@ namespace TribalMedia.Framework.Data return value; } - - public static object ConvertToDbType(object value) - { - //if (value is UID) - //{ - // return (value as UID).UUID.ToString(); - //} - - return value; - } } public class RowMapperField : FieldMapper diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs index 44a6542..818c530 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs @@ -25,10 +25,8 @@ */ using System; -using System.Collections.Generic; using System.Data; using System.Data.Common; -using TribalMedia.Framework.Data; namespace TribalMedia.Framework.Data { diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs index 15005f8..480a015 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs @@ -62,13 +62,13 @@ namespace TribalMedia.Framework.Data get { return m_tableName; } } - private Schema m_schema; + protected Schema m_schema; public Schema Schema { get { return m_schema; } } - private FieldMapper m_keyFieldMapper; + protected FieldMapper m_keyFieldMapper; public FieldMapper KeyFieldMapper { get { return m_keyFieldMapper; } @@ -104,5 +104,10 @@ namespace TribalMedia.Framework.Data { return m_connectionPool.CreateUpdateCommand(this, connection, rowMapper, primaryKey); } + + public object ConvertToDbType(object value) + { + return m_connectionPool.ConvertToDbType(value); + } } } \ No newline at end of file -- cgit v1.1