* Added competely untested MSSQLMapper
* Added the new mapper to the mapper factory * Made choice of mapper configurable * This means, in hteory, that we can persist avatar appearance on MSSQL as well0.6.0-stable
parent
8aa4308097
commit
f52886f8f5
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSim Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System.Data.Common;
|
||||||
|
using System.Data.SqlClient;
|
||||||
|
using OpenSim.Framework.Data;
|
||||||
|
|
||||||
|
namespace OpenSim.Framework.Data.MSSQLMapper
|
||||||
|
{
|
||||||
|
public class MSSQLDatabaseMapper : OpenSimDatabaseConnector
|
||||||
|
{
|
||||||
|
public MSSQLDatabaseMapper(string connectionString)
|
||||||
|
: base(connectionString)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override DbConnection GetNewConnection()
|
||||||
|
{
|
||||||
|
SqlConnection connection = new SqlConnection(m_connectionString);
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string CreateParamName(string fieldName)
|
||||||
|
{
|
||||||
|
return "@" + fieldName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using OpenSim.Framework;
|
|
||||||
using OpenSim.Framework.Data;
|
|
||||||
using OpenSim.Framework.Data.Base;
|
using OpenSim.Framework.Data.Base;
|
||||||
|
using OpenSim.Framework.Data.MSSQLMapper;
|
||||||
using OpenSim.Framework.Data.MySQLMapper;
|
using OpenSim.Framework.Data.MySQLMapper;
|
||||||
|
|
||||||
namespace OpenSim.Framework.Data.MapperFactory
|
namespace OpenSim.Framework.Data.MapperFactory
|
||||||
|
@ -10,16 +8,19 @@ namespace OpenSim.Framework.Data.MapperFactory
|
||||||
public class DataMapperFactory
|
public class DataMapperFactory
|
||||||
{
|
{
|
||||||
public enum MAPPER_TYPE {
|
public enum MAPPER_TYPE {
|
||||||
MYSQL,
|
MySQL,
|
||||||
|
MSSQL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static public BaseDatabaseConnector GetDataBaseMapper(MAPPER_TYPE type, string connectionString)
|
static public BaseDatabaseConnector GetDataBaseMapper(MAPPER_TYPE type, string connectionString)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case MAPPER_TYPE.MYSQL:
|
case MAPPER_TYPE.MySQL:
|
||||||
return new MySQLDatabaseMapper(connectionString);
|
return new MySQLDatabaseMapper(connectionString);
|
||||||
|
case MAPPER_TYPE.MSSQL:
|
||||||
|
return new MSSQLDatabaseMapper(connectionString);
|
||||||
default:
|
default:
|
||||||
return null;
|
throw new ArgumentException("Unknown Database Mapper type [" + type + "].");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,14 +220,22 @@ namespace OpenSim.Region.Modules.AvatarFactory
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_enablePersist = source.Configs["Startup"].GetBoolean("appearance_persist", false);
|
m_enablePersist = source.Configs["Startup"].GetBoolean("appearance_persist", false);
|
||||||
m_connectionString = source.Configs["Startup"].GetString("appearance_connection_string", "");
|
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
if (m_enablePersist)
|
if (m_enablePersist)
|
||||||
{
|
{
|
||||||
m_databaseMapper = DataMapperFactory.GetDataBaseMapper(DataMapperFactory.MAPPER_TYPE.MYSQL, m_connectionString);
|
m_connectionString = source.Configs["Startup"].GetString("appearance_connection_string", "");
|
||||||
|
|
||||||
|
string mapperTypeStr = source.Configs["Startup"].GetString("appearance_database", "MYSQL");
|
||||||
|
|
||||||
|
DataMapperFactory.MAPPER_TYPE mapperType =
|
||||||
|
(DataMapperFactory.MAPPER_TYPE)
|
||||||
|
Enum.Parse(typeof (DataMapperFactory.MAPPER_TYPE), mapperTypeStr);
|
||||||
|
|
||||||
|
m_databaseMapper = DataMapperFactory.GetDataBaseMapper(mapperType, m_connectionString);
|
||||||
|
|
||||||
m_appearanceMapper = new AppearanceTableMapper(m_databaseMapper, "AvatarAppearance");
|
m_appearanceMapper = new AppearanceTableMapper(m_databaseMapper, "AvatarAppearance");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ storage_prim_inventories = true
|
||||||
|
|
||||||
; Avatar appearance persistence
|
; Avatar appearance persistence
|
||||||
appearance_persist = false
|
appearance_persist = false
|
||||||
|
appearance_database = "MySQL"
|
||||||
appearance_connection_string = "Data Source=localhost;Database=avatar_appearance;User ID=root;Password=xxxx;pooling=false;"
|
appearance_connection_string = "Data Source=localhost;Database=avatar_appearance;User ID=root;Password=xxxx;pooling=false;"
|
||||||
|
|
||||||
; Select whether you want to use local or grid asset storage.
|
; Select whether you want to use local or grid asset storage.
|
||||||
|
|
29
prebuild.xml
29
prebuild.xml
|
@ -234,6 +234,34 @@
|
||||||
</Files>
|
</Files>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
<Project name="OpenSim.Framework.Data.MSSQLMapper" path="OpenSim/Framework/Data.MSSQLMapper" type="Library">
|
||||||
|
<Configuration name="Debug">
|
||||||
|
<Options>
|
||||||
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
</Options>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration name="Release">
|
||||||
|
<Options>
|
||||||
|
<OutputPath>../../../bin/</OutputPath>
|
||||||
|
</Options>
|
||||||
|
</Configuration>
|
||||||
|
|
||||||
|
<ReferencePath>../../../bin/</ReferencePath>
|
||||||
|
<Reference name="System" localCopy="false"/>
|
||||||
|
<Reference name="System.Xml"/>
|
||||||
|
<Reference name="System.Data"/>
|
||||||
|
<Reference name="OpenSim.Framework"/>
|
||||||
|
<Reference name="OpenSim.Framework.Data"/>
|
||||||
|
<Reference name="OpenSim.Framework.Data.Base"/>
|
||||||
|
<Reference name="libsecondlife.dll"/>
|
||||||
|
<Reference name="OpenSim.Framework.Console"/>
|
||||||
|
<Reference name="log4net"/>
|
||||||
|
|
||||||
|
<Files>
|
||||||
|
<Match pattern="*.cs" recurse="true"/>
|
||||||
|
</Files>
|
||||||
|
</Project>
|
||||||
|
|
||||||
<Project name="OpenSim.Framework.Data.MapperFactory" path="OpenSim/Framework/Data.MapperFactory" type="Library">
|
<Project name="OpenSim.Framework.Data.MapperFactory" path="OpenSim/Framework/Data.MapperFactory" type="Library">
|
||||||
<Configuration name="Debug">
|
<Configuration name="Debug">
|
||||||
<Options>
|
<Options>
|
||||||
|
@ -254,6 +282,7 @@
|
||||||
<Reference name="OpenSim.Framework.Data"/>
|
<Reference name="OpenSim.Framework.Data"/>
|
||||||
<Reference name="OpenSim.Framework.Data.Base"/>
|
<Reference name="OpenSim.Framework.Data.Base"/>
|
||||||
<Reference name="OpenSim.Framework.Data.MySQLMapper"/>
|
<Reference name="OpenSim.Framework.Data.MySQLMapper"/>
|
||||||
|
<Reference name="OpenSim.Framework.Data.MSSQLMapper"/>
|
||||||
|
|
||||||
<Files>
|
<Files>
|
||||||
<Match pattern="*.cs" recurse="true"/>
|
<Match pattern="*.cs" recurse="true"/>
|
||||||
|
|
Loading…
Reference in New Issue