diff options
author | lbsa71 | 2008-03-30 21:04:45 +0000 |
---|---|---|
committer | lbsa71 | 2008-03-30 21:04:45 +0000 |
commit | f52886f8f55ba6fd520cc3fffefd9a5607ad2a33 (patch) | |
tree | 484913aa8f0bde74cd42f8a7397f34390bb5bb00 | |
parent | * Minor cleanup (diff) | |
download | opensim-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.cs | 52 | ||||
-rw-r--r-- | OpenSim/Framework/Data.MapperFactory/DataMapperFactory.cs | 13 | ||||
-rw-r--r-- | OpenSim/Region/Modules/AvatarFactory/AvatarFactoryModule.cs | 12 | ||||
-rw-r--r-- | bin/OpenSim.ini.example | 1 | ||||
-rw-r--r-- | prebuild.xml | 29 |
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 | |||
28 | using System.Data.Common; | ||
29 | using System.Data.SqlClient; | ||
30 | using OpenSim.Framework.Data; | ||
31 | |||
32 | namespace 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 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | ||
3 | using OpenSim.Framework; | ||
4 | using OpenSim.Framework.Data; | ||
5 | using OpenSim.Framework.Data.Base; | 2 | using OpenSim.Framework.Data.Base; |
3 | using OpenSim.Framework.Data.MSSQLMapper; | ||
6 | using OpenSim.Framework.Data.MySQLMapper; | 4 | using OpenSim.Framework.Data.MySQLMapper; |
7 | 5 | ||
8 | namespace OpenSim.Framework.Data.MapperFactory | 6 | namespace 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 |
32 | appearance_persist = false | 32 | appearance_persist = false |
33 | appearance_database = "MySQL" | ||
33 | appearance_connection_string = "Data Source=localhost;Database=avatar_appearance;User ID=root;Password=xxxx;pooling=false;" | 34 | appearance_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"/> |