aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorlbsa712008-03-30 21:04:45 +0000
committerlbsa712008-03-30 21:04:45 +0000
commitf52886f8f55ba6fd520cc3fffefd9a5607ad2a33 (patch)
tree484913aa8f0bde74cd42f8a7397f34390bb5bb00
parent* Minor cleanup (diff)
downloadopensim-SC-f52886f8f55ba6fd520cc3fffefd9a5607ad2a33.zip
opensim-SC-f52886f8f55ba6fd520cc3fffefd9a5607ad2a33.tar.gz
opensim-SC-f52886f8f55ba6fd520cc3fffefd9a5607ad2a33.tar.bz2
opensim-SC-f52886f8f55ba6fd520cc3fffefd9a5607ad2a33.tar.xz
* 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 well
-rw-r--r--OpenSim/Framework/Data.MSSQLMapper/MSSQLDatabaseMapper.cs52
-rw-r--r--OpenSim/Framework/Data.MapperFactory/DataMapperFactory.cs13
-rw-r--r--OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs12
-rw-r--r--bin/OpenSim.ini.example1
-rw-r--r--prebuild.xml29
5 files changed, 99 insertions, 8 deletions
diff --git a/OpenSim/Framework/Data.MSSQLMapper/MSSQLDatabaseMapper.cs b/OpenSim/Framework/Data.MSSQLMapper/MSSQLDatabaseMapper.cs
new file mode 100644
index 0000000..725322d
--- /dev/null
+++ b/OpenSim/Framework/Data.MSSQLMapper/MSSQLDatabaseMapper.cs
@@ -0,0 +1,52 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSim Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System.Data.Common;
29using System.Data.SqlClient;
30using OpenSim.Framework.Data;
31
32namespace OpenSim.Framework.Data.MSSQLMapper
33{
34 public class MSSQLDatabaseMapper : OpenSimDatabaseConnector
35 {
36 public MSSQLDatabaseMapper(string connectionString)
37 : base(connectionString)
38 {
39 }
40
41 public override DbConnection GetNewConnection()
42 {
43 SqlConnection connection = new SqlConnection(m_connectionString);
44 return connection;
45 }
46
47 public override string CreateParamName(string fieldName)
48 {
49 return "@" + fieldName;
50 }
51 }
52} \ No newline at end of file
diff --git a/OpenSim/Framework/Data.MapperFactory/DataMapperFactory.cs b/OpenSim/Framework/Data.MapperFactory/DataMapperFactory.cs
index 37b933c..8995b9e 100644
--- a/OpenSim/Framework/Data.MapperFactory/DataMapperFactory.cs
+++ b/OpenSim/Framework/Data.MapperFactory/DataMapperFactory.cs
@@ -1,8 +1,6 @@
1using System; 1using System;
2using System.Collections.Generic;
3using OpenSim.Framework;
4using OpenSim.Framework.Data;
5using OpenSim.Framework.Data.Base; 2using OpenSim.Framework.Data.Base;
3using OpenSim.Framework.Data.MSSQLMapper;
6using OpenSim.Framework.Data.MySQLMapper; 4using OpenSim.Framework.Data.MySQLMapper;
7 5
8namespace OpenSim.Framework.Data.MapperFactory 6namespace OpenSim.Framework.Data.MapperFactory
@@ -10,16 +8,19 @@ namespace OpenSim.Framework.Data.MapperFactory
10 public class DataMapperFactory 8 public class DataMapperFactory
11 { 9 {
12 public enum MAPPER_TYPE { 10 public enum MAPPER_TYPE {
13 MYSQL, 11 MySQL,
12 MSSQL,
14 }; 13 };
15 14
16 static public BaseDatabaseConnector GetDataBaseMapper(MAPPER_TYPE type, string connectionString) 15 static public BaseDatabaseConnector GetDataBaseMapper(MAPPER_TYPE type, string connectionString)
17 { 16 {
18 switch (type) { 17 switch (type) {
19 case MAPPER_TYPE.MYSQL: 18 case MAPPER_TYPE.MySQL:
20 return new MySQLDatabaseMapper(connectionString); 19 return new MySQLDatabaseMapper(connectionString);
20 case MAPPER_TYPE.MSSQL:
21 return new MSSQLDatabaseMapper(connectionString);
21 default: 22 default:
22 return null; 23 throw new ArgumentException("Unknown Database Mapper type [" + type + "].");
23 } 24 }
24 } 25 }
25 } 26 }
diff --git a/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs
index b1a138b..751e92e 100644
--- a/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs
+++ b/OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs
@@ -220,14 +220,22 @@ namespace OpenSim.Region.Modules.AvatarFactory
220 try 220 try
221 { 221 {
222 m_enablePersist = source.Configs["Startup"].GetBoolean("appearance_persist", false); 222 m_enablePersist = source.Configs["Startup"].GetBoolean("appearance_persist", false);
223 m_connectionString = source.Configs["Startup"].GetString("appearance_connection_string", "");
224 } 223 }
225 catch (Exception) 224 catch (Exception)
226 { 225 {
227 } 226 }
228 if (m_enablePersist) 227 if (m_enablePersist)
229 { 228 {
230 m_databaseMapper = DataMapperFactory.GetDataBaseMapper(DataMapperFactory.MAPPER_TYPE.MYSQL, m_connectionString); 229 m_connectionString = source.Configs["Startup"].GetString("appearance_connection_string", "");
230
231 string mapperTypeStr = source.Configs["Startup"].GetString("appearance_database", "MYSQL");
232
233 DataMapperFactory.MAPPER_TYPE mapperType =
234 (DataMapperFactory.MAPPER_TYPE)
235 Enum.Parse(typeof (DataMapperFactory.MAPPER_TYPE), mapperTypeStr);
236
237 m_databaseMapper = DataMapperFactory.GetDataBaseMapper(mapperType, m_connectionString);
238
231 m_appearanceMapper = new AppearanceTableMapper(m_databaseMapper, "AvatarAppearance"); 239 m_appearanceMapper = new AppearanceTableMapper(m_databaseMapper, "AvatarAppearance");
232 } 240 }
233 } 241 }
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index f7fb61f..e596130 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -30,6 +30,7 @@ storage_prim_inventories = true
30 30
31; Avatar appearance persistence 31; Avatar appearance persistence
32appearance_persist = false 32appearance_persist = false
33appearance_database = "MySQL"
33appearance_connection_string = "Data Source=localhost;Database=avatar_appearance;User ID=root;Password=xxxx;pooling=false;" 34appearance_connection_string = "Data Source=localhost;Database=avatar_appearance;User ID=root;Password=xxxx;pooling=false;"
34 35
35; Select whether you want to use local or grid asset storage. 36; Select whether you want to use local or grid asset storage.
diff --git a/prebuild.xml b/prebuild.xml
index 89bbf09..c7f6c5f 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -234,6 +234,34 @@
234 </Files> 234 </Files>
235 </Project> 235 </Project>
236 236
237 <Project name="OpenSim.Framework.Data.MSSQLMapper" path="OpenSim/Framework/Data.MSSQLMapper" type="Library">
238 <Configuration name="Debug">
239 <Options>
240 <OutputPath>../../../bin/</OutputPath>
241 </Options>
242 </Configuration>
243 <Configuration name="Release">
244 <Options>
245 <OutputPath>../../../bin/</OutputPath>
246 </Options>
247 </Configuration>
248
249 <ReferencePath>../../../bin/</ReferencePath>
250 <Reference name="System" localCopy="false"/>
251 <Reference name="System.Xml"/>
252 <Reference name="System.Data"/>
253 <Reference name="OpenSim.Framework"/>
254 <Reference name="OpenSim.Framework.Data"/>
255 <Reference name="OpenSim.Framework.Data.Base"/>
256 <Reference name="libsecondlife.dll"/>
257 <Reference name="OpenSim.Framework.Console"/>
258 <Reference name="log4net"/>
259
260 <Files>
261 <Match pattern="*.cs" recurse="true"/>
262 </Files>
263 </Project>
264
237 <Project name="OpenSim.Framework.Data.MapperFactory" path="OpenSim/Framework/Data.MapperFactory" type="Library"> 265 <Project name="OpenSim.Framework.Data.MapperFactory" path="OpenSim/Framework/Data.MapperFactory" type="Library">
238 <Configuration name="Debug"> 266 <Configuration name="Debug">
239 <Options> 267 <Options>
@@ -254,6 +282,7 @@
254 <Reference name="OpenSim.Framework.Data"/> 282 <Reference name="OpenSim.Framework.Data"/>
255 <Reference name="OpenSim.Framework.Data.Base"/> 283 <Reference name="OpenSim.Framework.Data.Base"/>
256 <Reference name="OpenSim.Framework.Data.MySQLMapper"/> 284 <Reference name="OpenSim.Framework.Data.MySQLMapper"/>
285 <Reference name="OpenSim.Framework.Data.MSSQLMapper"/>
257 286
258 <Files> 287 <Files>
259 <Match pattern="*.cs" recurse="true"/> 288 <Match pattern="*.cs" recurse="true"/>