From 47c65295236560b0c58c1797ce2ad19418fa2b94 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Tue, 15 Jan 2008 10:15:39 +0000 Subject: [PATCH] * Some morw work on specializing the database framework for OpenSim --- .../Data/OpenSimObjectFieldMapper.cs | 3 ++- OpenSim/Framework/Data/OpenSimTableMapper.cs | 17 +++++++++++++ .../Data/PrimitiveBaseShapeTableMapper.cs | 4 +-- .../ObjectTableMapper.cs | 9 +++---- .../TribalMedia.Framework.Data/TableMapper.cs | 25 +++++++++++-------- 5 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 OpenSim/Framework/Data/OpenSimTableMapper.cs diff --git a/OpenSim/Framework/Data/OpenSimObjectFieldMapper.cs b/OpenSim/Framework/Data/OpenSimObjectFieldMapper.cs index b718fe476c..851ebcd450 100644 --- a/OpenSim/Framework/Data/OpenSimObjectFieldMapper.cs +++ b/OpenSim/Framework/Data/OpenSimObjectFieldMapper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Data.Common; using System.Text; using libsecondlife; using TribalMedia.Framework.Data; @@ -15,7 +16,7 @@ namespace OpenSim.Framework.Data { } - public override void ExpandField(TObj obj, System.Data.Common.DbCommand command, List fieldNames) + public override void ExpandField(TObj obj, DbCommand command, List fieldNames) { string fieldName = FieldName; object value = GetParamValue(obj); diff --git a/OpenSim/Framework/Data/OpenSimTableMapper.cs b/OpenSim/Framework/Data/OpenSimTableMapper.cs new file mode 100644 index 0000000000..c72f523a99 --- /dev/null +++ b/OpenSim/Framework/Data/OpenSimTableMapper.cs @@ -0,0 +1,17 @@ +using System.Data; +using TribalMedia.Framework.Data; + +namespace OpenSim.Framework.Data +{ + public abstract class OpenSimTableMapper : ObjectTableMapper + { + public OpenSimTableMapper(DatabaseMapper database, string tableName) : base(database, tableName) + { + } + + protected override DataReader CreateReader(IDataReader reader) + { + return new OpenSimDataReader(reader); + } + } +} diff --git a/OpenSim/Framework/Data/PrimitiveBaseShapeTableMapper.cs b/OpenSim/Framework/Data/PrimitiveBaseShapeTableMapper.cs index ab0115e65e..c8098ab0ce 100644 --- a/OpenSim/Framework/Data/PrimitiveBaseShapeTableMapper.cs +++ b/OpenSim/Framework/Data/PrimitiveBaseShapeTableMapper.cs @@ -14,7 +14,7 @@ namespace OpenSim.Framework.Data } } - public class PrimitiveBaseShapeTableMapper : ObjectTableMapper + public class PrimitiveBaseShapeTableMapper : OpenSimTableMapper { public PrimitiveBaseShapeTableMapper(DatabaseMapper connection, string tableName) : base(connection, tableName) @@ -140,4 +140,4 @@ namespace OpenSim.Framework.Data return mapper; } } -} \ No newline at end of file +} diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs index 818c530378..f2ee4f8395 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/ObjectTableMapper.cs @@ -32,8 +32,8 @@ namespace TribalMedia.Framework.Data { public abstract class ObjectTableMapper : TableMapper { - public ObjectTableMapper(DatabaseMapper connectionPool, string tableName) - : base(connectionPool, tableName) + public ObjectTableMapper(DatabaseMapper database, string tableName) + : base(database, tableName) { } @@ -52,7 +52,7 @@ namespace TribalMedia.Framework.Data { if (reader.Read()) { - result = FromReader(new DataReader(reader)); + result = FromReader( CreateReader(reader)); success = true; } else @@ -67,8 +67,7 @@ namespace TribalMedia.Framework.Data return success; } - - + public virtual bool Remove(TPrimaryKey id) { int deleted = 0; diff --git a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs index 480a015922..a2b0aa13d6 100644 --- a/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs +++ b/ThirdParty/TribalMedia/TribalMedia.Framework.Data/TableMapper.cs @@ -33,14 +33,14 @@ namespace TribalMedia.Framework.Data { public abstract class TableMapper { - private readonly DatabaseMapper m_connectionPool; + private readonly DatabaseMapper m_database; private readonly object m_syncRoot = new object(); protected void WithConnection(Action action) { lock (m_syncRoot) { - DbConnection m_connection = m_connectionPool.GetNewConnection(); + DbConnection m_connection = m_database.GetNewConnection(); if (m_connection.State != ConnectionState.Open) { @@ -74,40 +74,45 @@ namespace TribalMedia.Framework.Data get { return m_keyFieldMapper; } } - public TableMapper(DatabaseMapper connectionPool, string tableName) + public TableMapper(DatabaseMapper database, string tableName) { - m_connectionPool = connectionPool; + m_database = database; m_tableName = tableName.ToLower(); // Stupid MySQL hack. } public string CreateParamName(string fieldName) { - return m_connectionPool.CreateParamName(fieldName); + return m_database.CreateParamName(fieldName); } protected DbCommand CreateSelectCommand(DbConnection connection, string fieldName, object primaryKey) { - return m_connectionPool.CreateSelectCommand(this, connection, fieldName, primaryKey); + return m_database.CreateSelectCommand(this, connection, fieldName, primaryKey); } public string CreateCondition(DbCommand command, string fieldName, object key) { - return m_connectionPool.CreateCondition(this, command, fieldName, key); + return m_database.CreateCondition(this, command, fieldName, key); } public DbCommand CreateInsertCommand(DbConnection connection, object obj) { - return m_connectionPool.CreateInsertCommand(this, connection, obj); + return m_database.CreateInsertCommand(this, connection, obj); } public DbCommand CreateUpdateCommand(DbConnection connection, object rowMapper, object primaryKey) { - return m_connectionPool.CreateUpdateCommand(this, connection, rowMapper, primaryKey); + return m_database.CreateUpdateCommand(this, connection, rowMapper, primaryKey); } public object ConvertToDbType(object value) { - return m_connectionPool.ConvertToDbType(value); + return m_database.ConvertToDbType(value); + } + + protected virtual DataReader CreateReader(IDataReader reader) + { + return new DataReader(reader); } } } \ No newline at end of file