aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Data.MSSQL
diff options
context:
space:
mode:
authorlbsa712007-12-27 21:41:48 +0000
committerlbsa712007-12-27 21:41:48 +0000
commitefd90b56b761219af6425b1c7a2cdd3b6ffb4de2 (patch)
treebf5b897e1e3c13211e3e2fc61d30508b94c928c0 /OpenSim/Framework/Data.MSSQL
parent* removed always true if (diff)
downloadopensim-SC_OLD-efd90b56b761219af6425b1c7a2cdd3b6ffb4de2.zip
opensim-SC_OLD-efd90b56b761219af6425b1c7a2cdd3b6ffb4de2.tar.gz
opensim-SC_OLD-efd90b56b761219af6425b1c7a2cdd3b6ffb4de2.tar.bz2
opensim-SC_OLD-efd90b56b761219af6425b1c7a2cdd3b6ffb4de2.tar.xz
* Optimized usings
* shortened references * Removed redundant 'this' * Normalized EOF
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLAssetData.cs59
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs46
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLInventoryData.cs163
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs13
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLManager.cs261
-rw-r--r--OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs142
6 files changed, 343 insertions, 341 deletions
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLAssetData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLAssetData.cs
index cc0422c..08fbef0 100644
--- a/OpenSim/Framework/Data.MSSQL/MSSQLAssetData.cs
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLAssetData.cs
@@ -27,18 +27,18 @@
27*/ 27*/
28 28
29using System; 29using System;
30using System.Data;
31using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Data;
32using System.Data.SqlClient; 32using System.Data.SqlClient;
33
34using libsecondlife; 33using libsecondlife;
35using OpenSim.Framework.Console; 34using OpenSim.Framework.Console;
36 35
37namespace OpenSim.Framework.Data.MSSQL 36namespace OpenSim.Framework.Data.MSSQL
38{ 37{
39 class MSSQLAssetData : IAssetProvider 38 internal class MSSQLAssetData : IAssetProvider
40 { 39 {
41 MSSQLManager database; 40 private MSSQLManager database;
41
42 #region IAssetProvider Members 42 #region IAssetProvider Members
43 43
44 private void UpgradeAssetsTable(string tableName) 44 private void UpgradeAssetsTable(string tableName)
@@ -46,7 +46,7 @@ namespace OpenSim.Framework.Data.MSSQL
46 // null as the version, indicates that the table didn't exist 46 // null as the version, indicates that the table didn't exist
47 if (tableName == null) 47 if (tableName == null)
48 { 48 {
49 MainLog.Instance.Notice("ASSETS", "Creating new database tables"); 49 MainLog.Instance.Notice("ASSETS", "Creating new database tables");
50 database.ExecuteResourceSql("CreateAssetsTable.sql"); 50 database.ExecuteResourceSql("CreateAssetsTable.sql");
51 return; 51 return;
52 } 52 }
@@ -57,14 +57,12 @@ namespace OpenSim.Framework.Data.MSSQL
57 /// </summary> 57 /// </summary>
58 private void TestTables() 58 private void TestTables()
59 { 59 {
60
61 Dictionary<string, string> tableList = new Dictionary<string, string>(); 60 Dictionary<string, string> tableList = new Dictionary<string, string>();
62 61
63 tableList["assets"] = null; 62 tableList["assets"] = null;
64 database.GetTableVersion(tableList); 63 database.GetTableVersion(tableList);
65 64
66 UpgradeAssetsTable(tableList["assets"]); 65 UpgradeAssetsTable(tableList["assets"]);
67
68 } 66 }
69 67
70 public AssetBase FetchAsset(LLUUID assetID) 68 public AssetBase FetchAsset(LLUUID assetID)
@@ -80,30 +78,27 @@ namespace OpenSim.Framework.Data.MSSQL
80 asset = database.getAssetRow(reader); 78 asset = database.getAssetRow(reader);
81 reader.Close(); 79 reader.Close();
82 result.Dispose(); 80 result.Dispose();
83 81
84 return asset; 82 return asset;
85 } 83 }
86 84
87 public void CreateAsset(AssetBase asset) 85 public void CreateAsset(AssetBase asset)
88 { 86 {
89 87 if (ExistsAsset((LLUUID) asset.FullID))
90 if (ExistsAsset((LLUUID)asset.FullID))
91 { 88 {
92 return; 89 return;
93 } 90 }
94 91
95 92
96
97 SqlCommand cmd = 93 SqlCommand cmd =
98 new SqlCommand( 94 new SqlCommand(
99 "INSERT INTO assets ([id], [name], [description], [assetType], [invType], [local], [temporary], [data])"+ 95 "INSERT INTO assets ([id], [name], [description], [assetType], [invType], [local], [temporary], [data])" +
100 " VALUES "+ 96 " VALUES " +
101 "(@id, @name, @description, @assetType, @invType, @local, @temporary, @data)", 97 "(@id, @name, @description, @assetType, @invType, @local, @temporary, @data)",
102 database.getConnection()); 98 database.getConnection());
103 99
104 using (cmd) 100 using (cmd)
105 { 101 {
106
107 //SqlParameter p = cmd.Parameters.Add("id", SqlDbType.NVarChar); 102 //SqlParameter p = cmd.Parameters.Add("id", SqlDbType.NVarChar);
108 //p.Value = asset.FullID.ToString(); 103 //p.Value = asset.FullID.ToString();
109 cmd.Parameters.AddWithValue("id", asset.FullID.ToString()); 104 cmd.Parameters.AddWithValue("id", asset.FullID.ToString());
@@ -127,24 +122,23 @@ namespace OpenSim.Framework.Data.MSSQL
127 { 122 {
128 throw; 123 throw;
129 } 124 }
130 125
131 cmd.Dispose(); 126 cmd.Dispose();
132 } 127 }
133
134 } 128 }
135 129
136 130
137 public void UpdateAsset(AssetBase asset) 131 public void UpdateAsset(AssetBase asset)
138 { 132 {
139 SqlCommand command = new SqlCommand("UPDATE assets set id = @id, " + 133 SqlCommand command = new SqlCommand("UPDATE assets set id = @id, " +
140 "name = @name, " + 134 "name = @name, " +
141 "description = @description," + 135 "description = @description," +
142 "assetType = @assetType," + 136 "assetType = @assetType," +
143 "invType = @invType," + 137 "invType = @invType," +
144 "local = @local,"+ 138 "local = @local," +
145 "temporary = @temporary," + 139 "temporary = @temporary," +
146 "data = @data where " + 140 "data = @data where " +
147 "id = @keyId;", database.getConnection()); 141 "id = @keyId;", database.getConnection());
148 SqlParameter param1 = new SqlParameter("@id", asset.FullID.ToString()); 142 SqlParameter param1 = new SqlParameter("@id", asset.FullID.ToString());
149 SqlParameter param2 = new SqlParameter("@name", asset.Name); 143 SqlParameter param2 = new SqlParameter("@name", asset.Name);
150 SqlParameter param3 = new SqlParameter("@description", asset.Description); 144 SqlParameter param3 = new SqlParameter("@description", asset.Description);
@@ -172,12 +166,12 @@ namespace OpenSim.Framework.Data.MSSQL
172 { 166 {
173 MainLog.Instance.Error(e.ToString()); 167 MainLog.Instance.Error(e.ToString());
174 } 168 }
175
176 } 169 }
177 170
178 public bool ExistsAsset(LLUUID uuid) 171 public bool ExistsAsset(LLUUID uuid)
179 { 172 {
180 if (FetchAsset(uuid) != null) { 173 if (FetchAsset(uuid) != null)
174 {
181 return true; 175 return true;
182 } 176 }
183 return false; 177 return false;
@@ -194,11 +188,8 @@ namespace OpenSim.Framework.Data.MSSQL
194 188
195 #region IPlugin Members 189 #region IPlugin Members
196 190
197
198
199 public void Initialise() 191 public void Initialise()
200 { 192 {
201
202 IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini"); 193 IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini");
203 string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source"); 194 string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source");
204 string settingInitialCatalog = GridDataMySqlFile.ParseFileReadValue("initial_catalog"); 195 string settingInitialCatalog = GridDataMySqlFile.ParseFileReadValue("initial_catalog");
@@ -206,7 +197,9 @@ namespace OpenSim.Framework.Data.MSSQL
206 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); 197 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id");
207 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); 198 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
208 199
209 this.database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); 200 database =
201 new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId,
202 settingPassword);
210 203
211 TestTables(); 204 TestTables();
212 } 205 }
@@ -214,7 +207,7 @@ namespace OpenSim.Framework.Data.MSSQL
214 public string Version 207 public string Version
215 { 208 {
216// get { return database.getVersion(); } 209// get { return database.getVersion(); }
217 get { return database.getVersion(); } 210 get { return database.getVersion(); }
218 } 211 }
219 212
220 public string Name 213 public string Name
@@ -224,4 +217,4 @@ namespace OpenSim.Framework.Data.MSSQL
224 217
225 #endregion 218 #endregion
226 } 219 }
227} 220} \ No newline at end of file
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs
index 72db568..7d228e6 100644
--- a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs
@@ -57,8 +57,9 @@ namespace OpenSim.Framework.Data.MSSQL
57 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); 57 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id");
58 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); 58 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
59 59
60 database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); 60 database =
61 61 new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId,
62 settingPassword);
62 } 63 }
63 64
64 /// <summary> 65 /// <summary>
@@ -120,14 +121,13 @@ namespace OpenSim.Framework.Data.MSSQL
120 result.Dispose(); 121 result.Dispose();
121 122
122 return row; 123 return row;
123
124 } 124 }
125 catch (Exception) 125 catch (Exception)
126 { 126 {
127 if (reader != null) { 127 if (reader != null)
128 {
128 reader.Close(); 129 reader.Close();
129 } 130 }
130
131 } 131 }
132 return null; 132 return null;
133 } 133 }
@@ -135,7 +135,6 @@ namespace OpenSim.Framework.Data.MSSQL
135 /// <summary> 135 /// <summary>
136 /// // Returns a list of avatar and UUIDs that match the query 136 /// // Returns a list of avatar and UUIDs that match the query
137 /// </summary> 137 /// </summary>
138
139 public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query) 138 public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
140 { 139 {
141 List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>(); 140 List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>();
@@ -152,18 +151,19 @@ namespace OpenSim.Framework.Data.MSSQL
152 param["second"] = querysplit[1]; 151 param["second"] = querysplit[1];
153 152
154 IDbCommand result = 153 IDbCommand result =
155 database.Query("SELECT UUID,username,surname FROM users WHERE username = @first AND lastname = @second", param); 154 database.Query(
155 "SELECT UUID,username,surname FROM users WHERE username = @first AND lastname = @second",
156 param);
156 IDataReader reader = result.ExecuteReader(); 157 IDataReader reader = result.ExecuteReader();
157 158
158 159
159 while (reader.Read()) 160 while (reader.Read())
160 { 161 {
161 AvatarPickerAvatar user = new AvatarPickerAvatar(); 162 AvatarPickerAvatar user = new AvatarPickerAvatar();
162 user.AvatarID = new LLUUID((string)reader["UUID"]); 163 user.AvatarID = new LLUUID((string) reader["UUID"]);
163 user.firstName = (string)reader["username"]; 164 user.firstName = (string) reader["username"];
164 user.lastName = (string)reader["surname"]; 165 user.lastName = (string) reader["surname"];
165 returnlist.Add(user); 166 returnlist.Add(user);
166
167 } 167 }
168 reader.Close(); 168 reader.Close();
169 result.Dispose(); 169 result.Dispose();
@@ -175,13 +175,9 @@ namespace OpenSim.Framework.Data.MSSQL
175 MainLog.Instance.Error(e.ToString()); 175 MainLog.Instance.Error(e.ToString());
176 return returnlist; 176 return returnlist;
177 } 177 }
178
179
180
181 } 178 }
182 else if (querysplit.Length == 1) 179 else if (querysplit.Length == 1)
183 { 180 {
184
185 try 181 try
186 { 182 {
187 lock (database) 183 lock (database)
@@ -191,18 +187,19 @@ namespace OpenSim.Framework.Data.MSSQL
191 param["second"] = querysplit[1]; 187 param["second"] = querysplit[1];
192 188
193 IDbCommand result = 189 IDbCommand result =
194 database.Query("SELECT UUID,username,surname FROM users WHERE username = @first OR lastname = @second", param); 190 database.Query(
191 "SELECT UUID,username,surname FROM users WHERE username = @first OR lastname = @second",
192 param);
195 IDataReader reader = result.ExecuteReader(); 193 IDataReader reader = result.ExecuteReader();
196 194
197 195
198 while (reader.Read()) 196 while (reader.Read())
199 { 197 {
200 AvatarPickerAvatar user = new AvatarPickerAvatar(); 198 AvatarPickerAvatar user = new AvatarPickerAvatar();
201 user.AvatarID = new LLUUID((string)reader["UUID"]); 199 user.AvatarID = new LLUUID((string) reader["UUID"]);
202 user.firstName = (string)reader["username"]; 200 user.firstName = (string) reader["username"];
203 user.lastName = (string)reader["surname"]; 201 user.lastName = (string) reader["surname"];
204 returnlist.Add(user); 202 returnlist.Add(user);
205
206 } 203 }
207 reader.Close(); 204 reader.Close();
208 result.Dispose(); 205 result.Dispose();
@@ -225,8 +222,8 @@ namespace OpenSim.Framework.Data.MSSQL
225 /// <returns>The sim profile</returns> 222 /// <returns>The sim profile</returns>
226 public RegionProfileData GetProfileByLLUUID(LLUUID uuid) 223 public RegionProfileData GetProfileByLLUUID(LLUUID uuid)
227 { 224 {
228 Dictionary<string, string> param = new Dictionary<string, string>(); 225 Dictionary<string, string> param = new Dictionary<string, string>();
229 param["uuid"] = uuid.ToString(); 226 param["uuid"] = uuid.ToString();
230 IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); 227 IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param);
231 IDataReader reader = result.ExecuteReader(); 228 IDataReader reader = result.ExecuteReader();
232 229
@@ -244,7 +241,6 @@ namespace OpenSim.Framework.Data.MSSQL
244 /// <returns>A dataresponse enum indicating success</returns> 241 /// <returns>A dataresponse enum indicating success</returns>
245 public DataResponse AddProfile(RegionProfileData profile) 242 public DataResponse AddProfile(RegionProfileData profile)
246 { 243 {
247
248 try 244 try
249 { 245 {
250 if (GetProfileByLLUUID(profile.UUID) != null) 246 if (GetProfileByLLUUID(profile.UUID) != null)
@@ -310,4 +306,4 @@ namespace OpenSim.Framework.Data.MSSQL
310 return null; 306 return null;
311 } 307 }
312 } 308 }
313} 309} \ No newline at end of file
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLInventoryData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLInventoryData.cs
index a6b8819..4b2c7af 100644
--- a/OpenSim/Framework/Data.MSSQL/MSSQLInventoryData.cs
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLInventoryData.cs
@@ -26,10 +26,9 @@
26* 26*
27*/ 27*/
28using System; 28using System;
29using System.IO; 29using System.Collections.Generic;
30using System.Data; 30using System.Data;
31using System.Data.SqlClient; 31using System.Data.SqlClient;
32using System.Collections.Generic;
33using libsecondlife; 32using libsecondlife;
34using OpenSim.Framework.Console; 33using OpenSim.Framework.Console;
35 34
@@ -57,7 +56,9 @@ namespace OpenSim.Framework.Data.MSSQL
57 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); 56 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id");
58 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); 57 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
59 58
60 database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); 59 database =
60 new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId,
61 settingPassword);
61 TestTables(); 62 TestTables();
62 } 63 }
63 64
@@ -72,7 +73,6 @@ namespace OpenSim.Framework.Data.MSSQL
72 //database.ExecuteResourceSql("UpgradeFoldersTableToVersion2.sql"); 73 //database.ExecuteResourceSql("UpgradeFoldersTableToVersion2.sql");
73 return; 74 return;
74 } 75 }
75
76 } 76 }
77 77
78 private void UpgradeItemsTable(string tableName) 78 private void UpgradeItemsTable(string tableName)
@@ -88,17 +88,17 @@ namespace OpenSim.Framework.Data.MSSQL
88 88
89 private void TestTables() 89 private void TestTables()
90 { 90 {
91
92 Dictionary<string, string> tableList = new Dictionary<string, string>(); 91 Dictionary<string, string> tableList = new Dictionary<string, string>();
93 92
94 tableList["inventoryfolders"] = null; 93 tableList["inventoryfolders"] = null;
95 tableList["inventoryitems"] = null; 94 tableList["inventoryitems"] = null;
96 95
97 database.GetTableVersion(tableList); 96 database.GetTableVersion(tableList);
98 97
99 UpgradeFoldersTable(tableList["inventoryfolders"]); 98 UpgradeFoldersTable(tableList["inventoryfolders"]);
100 UpgradeItemsTable(tableList["inventoryitems"]); 99 UpgradeItemsTable(tableList["inventoryitems"]);
101 } 100 }
101
102 #endregion 102 #endregion
103 103
104 /// <summary> 104 /// <summary>
@@ -124,7 +124,7 @@ namespace OpenSim.Framework.Data.MSSQL
124 /// <returns>A string containing the DB provider</returns> 124 /// <returns>A string containing the DB provider</returns>
125 public string getVersion() 125 public string getVersion()
126 { 126 {
127 return database.getVersion(); 127 return database.getVersion();
128 } 128 }
129 129
130 /// <summary> 130 /// <summary>
@@ -143,15 +143,16 @@ namespace OpenSim.Framework.Data.MSSQL
143 Dictionary<string, string> param = new Dictionary<string, string>(); 143 Dictionary<string, string> param = new Dictionary<string, string>();
144 param["parentFolderID"] = folderID.ToString(); 144 param["parentFolderID"] = folderID.ToString();
145 145
146 IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = @parentFolderID", param); 146 IDbCommand result =
147 database.Query("SELECT * FROM inventoryitems WHERE parentFolderID = @parentFolderID", param);
147 IDataReader reader = result.ExecuteReader(); 148 IDataReader reader = result.ExecuteReader();
148 149
149 while(reader.Read()) 150 while (reader.Read())
150 items.Add(readInventoryItem(reader)); 151 items.Add(readInventoryItem(reader));
151 152
152 reader.Close(); 153 reader.Close();
153 result.Dispose(); 154 result.Dispose();
154 155
155 return items; 156 return items;
156 } 157 }
157 } 158 }
@@ -174,16 +175,17 @@ namespace OpenSim.Framework.Data.MSSQL
174 { 175 {
175 lock (database) 176 lock (database)
176 { 177 {
177
178 Dictionary<string, string> param = new Dictionary<string, string>(); 178 Dictionary<string, string> param = new Dictionary<string, string>();
179 param["uuid"] = user.ToString(); 179 param["uuid"] = user.ToString();
180 param["zero"] = LLUUID.Zero.ToString(); 180 param["zero"] = LLUUID.Zero.ToString();
181 181
182 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = @zero AND agentID = @uuid", param); 182 IDbCommand result =
183 database.Query(
184 "SELECT * FROM inventoryfolders WHERE parentFolderID = @zero AND agentID = @uuid", param);
183 IDataReader reader = result.ExecuteReader(); 185 IDataReader reader = result.ExecuteReader();
184 186
185 List<InventoryFolderBase> items = new List<InventoryFolderBase>(); 187 List<InventoryFolderBase> items = new List<InventoryFolderBase>();
186 while(reader.Read()) 188 while (reader.Read())
187 items.Add(readInventoryFolder(reader)); 189 items.Add(readInventoryFolder(reader));
188 190
189 191
@@ -212,24 +214,27 @@ namespace OpenSim.Framework.Data.MSSQL
212 param["uuid"] = user.ToString(); 214 param["uuid"] = user.ToString();
213 param["zero"] = LLUUID.Zero.ToString(); 215 param["zero"] = LLUUID.Zero.ToString();
214 216
215 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = @zero AND agentID = @uuid", param); 217 IDbCommand result =
218 database.Query(
219 "SELECT * FROM inventoryfolders WHERE parentFolderID = @zero AND agentID = @uuid", param);
216 IDataReader reader = result.ExecuteReader(); 220 IDataReader reader = result.ExecuteReader();
217 221
218 List<InventoryFolderBase> items = new List<InventoryFolderBase>(); 222 List<InventoryFolderBase> items = new List<InventoryFolderBase>();
219 while(reader.Read()) 223 while (reader.Read())
220 items.Add(readInventoryFolder(reader)); 224 items.Add(readInventoryFolder(reader));
221 225
222 InventoryFolderBase rootFolder = null; 226 InventoryFolderBase rootFolder = null;
223 227
224 // There should only ever be one root folder for a user. However, if there's more 228 // There should only ever be one root folder for a user. However, if there's more
225 // than one we'll simply use the first one rather than failing. It would be even 229 // than one we'll simply use the first one rather than failing. It would be even
226 // nicer to print some message to this effect, but this feels like it's too low a 230 // nicer to print some message to this effect, but this feels like it's too low a
227 // to put such a message out, and it's too minor right now to spare the time to 231 // to put such a message out, and it's too minor right now to spare the time to
228 // suitably refactor. 232 // suitably refactor.
229 if (items.Count > 0) { 233 if (items.Count > 0)
234 {
230 rootFolder = items[0]; 235 rootFolder = items[0];
231 } 236 }
232 237
233 reader.Close(); 238 reader.Close();
234 result.Dispose(); 239 result.Dispose();
235 240
@@ -259,12 +264,13 @@ namespace OpenSim.Framework.Data.MSSQL
259 param["parentFolderID"] = parentID.ToString(); 264 param["parentFolderID"] = parentID.ToString();
260 265
261 266
262 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = @parentFolderID", param); 267 IDbCommand result =
268 database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = @parentFolderID", param);
263 IDataReader reader = result.ExecuteReader(); 269 IDataReader reader = result.ExecuteReader();
264 270
265 List<InventoryFolderBase> items = new List<InventoryFolderBase>(); 271 List<InventoryFolderBase> items = new List<InventoryFolderBase>();
266 272
267 while(reader.Read()) 273 while (reader.Read())
268 items.Add(readInventoryFolder(reader)); 274 items.Add(readInventoryFolder(reader));
269 275
270 reader.Close(); 276 reader.Close();
@@ -292,17 +298,17 @@ namespace OpenSim.Framework.Data.MSSQL
292 { 298 {
293 InventoryItemBase item = new InventoryItemBase(); 299 InventoryItemBase item = new InventoryItemBase();
294 300
295 item.inventoryID = new LLUUID((string)reader["inventoryID"]); 301 item.inventoryID = new LLUUID((string) reader["inventoryID"]);
296 item.assetID = new LLUUID((string)reader["assetID"]); 302 item.assetID = new LLUUID((string) reader["assetID"]);
297 item.assetType = (int)reader["assetType"]; 303 item.assetType = (int) reader["assetType"];
298 item.parentFolderID = new LLUUID((string)reader["parentFolderID"]); 304 item.parentFolderID = new LLUUID((string) reader["parentFolderID"]);
299 item.avatarID = new LLUUID((string)reader["avatarID"]); 305 item.avatarID = new LLUUID((string) reader["avatarID"]);
300 item.inventoryName = (string)reader["inventoryName"]; 306 item.inventoryName = (string) reader["inventoryName"];
301 item.inventoryDescription = (string)reader["inventoryDescription"]; 307 item.inventoryDescription = (string) reader["inventoryDescription"];
302 item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"]); 308 item.inventoryNextPermissions = Convert.ToUInt32(reader["inventoryNextPermissions"]);
303 item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"]); 309 item.inventoryCurrentPermissions = Convert.ToUInt32(reader["inventoryCurrentPermissions"]);
304 item.invType = (int)reader["invType"]; 310 item.invType = (int) reader["invType"];
305 item.creatorsID = new LLUUID((string)reader["creatorID"]); 311 item.creatorsID = new LLUUID((string) reader["creatorID"]);
306 item.inventoryBasePermissions = Convert.ToUInt32(reader["inventoryBasePermissions"]); 312 item.inventoryBasePermissions = Convert.ToUInt32(reader["inventoryBasePermissions"]);
307 item.inventoryEveryOnePermissions = Convert.ToUInt32(reader["inventoryEveryOnePermissions"]); 313 item.inventoryEveryOnePermissions = Convert.ToUInt32(reader["inventoryEveryOnePermissions"]);
308 return item; 314 return item;
@@ -322,7 +328,6 @@ namespace OpenSim.Framework.Data.MSSQL
322 /// <returns>An inventory item</returns> 328 /// <returns>An inventory item</returns>
323 public InventoryItemBase getInventoryItem(LLUUID itemID) 329 public InventoryItemBase getInventoryItem(LLUUID itemID)
324 { 330 {
325
326 try 331 try
327 { 332 {
328 lock (database) 333 lock (database)
@@ -330,11 +335,12 @@ namespace OpenSim.Framework.Data.MSSQL
330 Dictionary<string, string> param = new Dictionary<string, string>(); 335 Dictionary<string, string> param = new Dictionary<string, string>();
331 param["inventoryID"] = itemID.ToString(); 336 param["inventoryID"] = itemID.ToString();
332 337
333 IDbCommand result = database.Query("SELECT * FROM inventoryitems WHERE inventoryID = @inventoryID", param); 338 IDbCommand result =
339 database.Query("SELECT * FROM inventoryitems WHERE inventoryID = @inventoryID", param);
334 IDataReader reader = result.ExecuteReader(); 340 IDataReader reader = result.ExecuteReader();
335 341
336 InventoryItemBase item = null; 342 InventoryItemBase item = null;
337 if(reader.Read()) 343 if (reader.Read())
338 item = readInventoryItem(reader); 344 item = readInventoryItem(reader);
339 345
340 reader.Close(); 346 reader.Close();
@@ -361,12 +367,12 @@ namespace OpenSim.Framework.Data.MSSQL
361 try 367 try
362 { 368 {
363 InventoryFolderBase folder = new InventoryFolderBase(); 369 InventoryFolderBase folder = new InventoryFolderBase();
364 folder.agentID = new LLUUID((string)reader["agentID"]); 370 folder.agentID = new LLUUID((string) reader["agentID"]);
365 folder.parentID = new LLUUID((string)reader["parentFolderID"]); 371 folder.parentID = new LLUUID((string) reader["parentFolderID"]);
366 folder.folderID = new LLUUID((string)reader["folderID"]); 372 folder.folderID = new LLUUID((string) reader["folderID"]);
367 folder.name = (string)reader["folderName"]; 373 folder.name = (string) reader["folderName"];
368 folder.type = (short)reader["type"]; 374 folder.type = (short) reader["type"];
369 folder.version = (ushort)((int)reader["version"]); 375 folder.version = (ushort) ((int) reader["version"]);
370 return folder; 376 return folder;
371 } 377 }
372 catch (Exception e) 378 catch (Exception e)
@@ -389,7 +395,7 @@ namespace OpenSim.Framework.Data.MSSQL
389 { 395 {
390 lock (database) 396 lock (database)
391 { 397 {
392 Dictionary<string, string> param = new Dictionary<string,string>(); 398 Dictionary<string, string> param = new Dictionary<string, string>();
393 param["uuid"] = folderID.ToString(); 399 param["uuid"] = folderID.ToString();
394 400
395 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = @uuid", param); 401 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE folderID = @uuid", param);
@@ -418,8 +424,10 @@ namespace OpenSim.Framework.Data.MSSQL
418 public void addInventoryItem(InventoryItemBase item) 424 public void addInventoryItem(InventoryItemBase item)
419 { 425 {
420 string sql = "INSERT INTO inventoryitems"; 426 string sql = "INSERT INTO inventoryitems";
421 sql += "([inventoryID], [assetID], [assetType], [parentFolderID], [avatarID], [inventoryName], [inventoryDescription], [inventoryNextPermissions], [inventoryCurrentPermissions], [invType], [creatorID], [inventoryBasePermissions], [inventoryEveryOnePermissions]) VALUES "; 427 sql +=
422 sql += "(@inventoryID, @assetID, @assetType, @parentFolderID, @avatarID, @inventoryName, @inventoryDescription, @inventoryNextPermissions, @inventoryCurrentPermissions, @invType, @creatorID, @inventoryBasePermissions, @inventoryEveryOnePermissions);"; 428 "([inventoryID], [assetID], [assetType], [parentFolderID], [avatarID], [inventoryName], [inventoryDescription], [inventoryNextPermissions], [inventoryCurrentPermissions], [invType], [creatorID], [inventoryBasePermissions], [inventoryEveryOnePermissions]) VALUES ";
429 sql +=
430 "(@inventoryID, @assetID, @assetType, @parentFolderID, @avatarID, @inventoryName, @inventoryDescription, @inventoryNextPermissions, @inventoryCurrentPermissions, @invType, @creatorID, @inventoryBasePermissions, @inventoryEveryOnePermissions);";
423 431
424 try 432 try
425 { 433 {
@@ -441,7 +449,6 @@ namespace OpenSim.Framework.Data.MSSQL
441 IDbCommand result = database.Query(sql, param); 449 IDbCommand result = database.Query(sql, param);
442 result.ExecuteNonQuery(); 450 result.ExecuteNonQuery();
443 result.Dispose(); 451 result.Dispose();
444
445 } 452 }
446 catch (SqlException e) 453 catch (SqlException e)
447 { 454 {
@@ -454,21 +461,21 @@ namespace OpenSim.Framework.Data.MSSQL
454 /// </summary> 461 /// </summary>
455 /// <param name="item">Inventory item to update</param> 462 /// <param name="item">Inventory item to update</param>
456 public void updateInventoryItem(InventoryItemBase item) 463 public void updateInventoryItem(InventoryItemBase item)
457 { 464 {
458 SqlCommand command = new SqlCommand("UPDATE inventoryitems set inventoryID = @inventoryID, " + 465 SqlCommand command = new SqlCommand("UPDATE inventoryitems set inventoryID = @inventoryID, " +
459 "assetID = @assetID, " + 466 "assetID = @assetID, " +
460 "assetType = @assetType" + 467 "assetType = @assetType" +
461 "parentFolderID = @parentFolderID" + 468 "parentFolderID = @parentFolderID" +
462 "avatarID = @avatarID" + 469 "avatarID = @avatarID" +
463 "inventoryName = @inventoryName"+ 470 "inventoryName = @inventoryName" +
464 "inventoryDescription = @inventoryDescription" + 471 "inventoryDescription = @inventoryDescription" +
465 "inventoryNextPermissions = @inventoryNextPermissions" + 472 "inventoryNextPermissions = @inventoryNextPermissions" +
466 "inventoryCurrentPermissions = @inventoryCurrentPermissions" + 473 "inventoryCurrentPermissions = @inventoryCurrentPermissions" +
467 "invType = @invType" + 474 "invType = @invType" +
468 "creatorID = @creatorID" + 475 "creatorID = @creatorID" +
469 "inventoryBasePermissions = @inventoryBasePermissions" + 476 "inventoryBasePermissions = @inventoryBasePermissions" +
470 "inventoryEveryOnePermissions = @inventoryEveryOnePermissions) where " + 477 "inventoryEveryOnePermissions = @inventoryEveryOnePermissions) where " +
471 "invenoryID = @keyInventoryID;", database.getConnection()); 478 "invenoryID = @keyInventoryID;", database.getConnection());
472 SqlParameter param1 = new SqlParameter("@inventoryID", item.inventoryID.ToString()); 479 SqlParameter param1 = new SqlParameter("@inventoryID", item.inventoryID.ToString());
473 SqlParameter param2 = new SqlParameter("@assetID", item.assetID); 480 SqlParameter param2 = new SqlParameter("@assetID", item.assetID);
474 SqlParameter param3 = new SqlParameter("@assetType", item.assetType); 481 SqlParameter param3 = new SqlParameter("@assetType", item.assetType);
@@ -481,7 +488,7 @@ namespace OpenSim.Framework.Data.MSSQL
481 SqlParameter param10 = new SqlParameter("@invType", item.invType); 488 SqlParameter param10 = new SqlParameter("@invType", item.invType);
482 SqlParameter param11 = new SqlParameter("@creatorID", item.creatorsID); 489 SqlParameter param11 = new SqlParameter("@creatorID", item.creatorsID);
483 SqlParameter param12 = new SqlParameter("@inventoryBasePermissions", item.inventoryBasePermissions); 490 SqlParameter param12 = new SqlParameter("@inventoryBasePermissions", item.inventoryBasePermissions);
484 SqlParameter param13 = new SqlParameter("@inventoryEveryOnePermissions", item.inventoryEveryOnePermissions); 491 SqlParameter param13 = new SqlParameter("@inventoryEveryOnePermissions", item.inventoryEveryOnePermissions);
485 SqlParameter param14 = new SqlParameter("@keyInventoryID", item.inventoryID.ToString()); 492 SqlParameter param14 = new SqlParameter("@keyInventoryID", item.inventoryID.ToString());
486 command.Parameters.Add(param1); 493 command.Parameters.Add(param1);
487 command.Parameters.Add(param2); 494 command.Parameters.Add(param2);
@@ -506,7 +513,6 @@ namespace OpenSim.Framework.Data.MSSQL
506 { 513 {
507 MainLog.Instance.Error(e.ToString()); 514 MainLog.Instance.Error(e.ToString());
508 } 515 }
509
510 } 516 }
511 517
512 /// <summary> 518 /// <summary>
@@ -523,8 +529,6 @@ namespace OpenSim.Framework.Data.MSSQL
523 IDbCommand cmd = database.Query("DELETE FROM inventoryitems WHERE inventoryID=@uuid", param); 529 IDbCommand cmd = database.Query("DELETE FROM inventoryitems WHERE inventoryID=@uuid", param);
524 cmd.ExecuteNonQuery(); 530 cmd.ExecuteNonQuery();
525 cmd.Dispose(); 531 cmd.Dispose();
526
527
528 } 532 }
529 catch (SqlException e) 533 catch (SqlException e)
530 { 534 {
@@ -539,7 +543,8 @@ namespace OpenSim.Framework.Data.MSSQL
539 /// <param name="folder">Folder to create</param> 543 /// <param name="folder">Folder to create</param>
540 public void addInventoryFolder(InventoryFolderBase folder) 544 public void addInventoryFolder(InventoryFolderBase folder)
541 { 545 {
542 string sql = "INSERT INTO inventoryfolders ([folderID], [agentID], [parentFolderID], [folderName], [type], [version]) VALUES "; 546 string sql =
547 "INSERT INTO inventoryfolders ([folderID], [agentID], [parentFolderID], [folderName], [type], [version]) VALUES ";
543 sql += "(@folderID, @agentID, @parentFolderID, @folderName, @type, @version);"; 548 sql += "(@folderID, @agentID, @parentFolderID, @folderName, @type, @version);";
544 549
545 550
@@ -550,9 +555,9 @@ namespace OpenSim.Framework.Data.MSSQL
550 param["folderName"] = folder.name; 555 param["folderName"] = folder.name;
551 param["type"] = Convert.ToString(folder.type); 556 param["type"] = Convert.ToString(folder.type);
552 param["version"] = Convert.ToString(folder.version); 557 param["version"] = Convert.ToString(folder.version);
553 558
554 try 559 try
555 { 560 {
556 IDbCommand result = database.Query(sql, param); 561 IDbCommand result = database.Query(sql, param);
557 result.ExecuteNonQuery(); 562 result.ExecuteNonQuery();
558 result.Dispose(); 563 result.Dispose();
@@ -567,16 +572,15 @@ namespace OpenSim.Framework.Data.MSSQL
567 /// Updates an inventory folder 572 /// Updates an inventory folder
568 /// </summary> 573 /// </summary>
569 /// <param name="folder">Folder to update</param> 574 /// <param name="folder">Folder to update</param>
570
571 public void updateInventoryFolder(InventoryFolderBase folder) 575 public void updateInventoryFolder(InventoryFolderBase folder)
572 { 576 {
573 SqlCommand command = new SqlCommand("UPDATE inventoryfolders set folderID = @folderID, " + 577 SqlCommand command = new SqlCommand("UPDATE inventoryfolders set folderID = @folderID, " +
574 "agentID = @agentID, " + 578 "agentID = @agentID, " +
575 "parentFolderID = @parentFolderID," + 579 "parentFolderID = @parentFolderID," +
576 "folderName = @folderName," + 580 "folderName = @folderName," +
577 "type = @type," + 581 "type = @type," +
578 "version = @version where " + 582 "version = @version where " +
579 "folderID = @keyFolderID;", database.getConnection()); 583 "folderID = @keyFolderID;", database.getConnection());
580 SqlParameter param1 = new SqlParameter("@folderID", folder.folderID.ToString()); 584 SqlParameter param1 = new SqlParameter("@folderID", folder.folderID.ToString());
581 SqlParameter param2 = new SqlParameter("@agentID", folder.agentID.ToString()); 585 SqlParameter param2 = new SqlParameter("@agentID", folder.agentID.ToString());
582 SqlParameter param3 = new SqlParameter("@parentFolderID", folder.parentID.ToString()); 586 SqlParameter param3 = new SqlParameter("@parentFolderID", folder.parentID.ToString());
@@ -600,20 +604,17 @@ namespace OpenSim.Framework.Data.MSSQL
600 { 604 {
601 MainLog.Instance.Error(e.ToString()); 605 MainLog.Instance.Error(e.ToString());
602 } 606 }
603
604
605 } 607 }
606 608
607 /// <summary> 609 /// <summary>
608 /// Updates an inventory folder 610 /// Updates an inventory folder
609 /// </summary> 611 /// </summary>
610 /// <param name="folder">Folder to update</param> 612 /// <param name="folder">Folder to update</param>
611
612 public void moveInventoryFolder(InventoryFolderBase folder) 613 public void moveInventoryFolder(InventoryFolderBase folder)
613 { 614 {
614 SqlCommand command = new SqlCommand("UPDATE inventoryfolders set folderID = @folderID, " + 615 SqlCommand command = new SqlCommand("UPDATE inventoryfolders set folderID = @folderID, " +
615 "parentFolderID = @parentFolderID," + 616 "parentFolderID = @parentFolderID," +
616 "folderID = @keyFolderID;", database.getConnection()); 617 "folderID = @keyFolderID;", database.getConnection());
617 SqlParameter param1 = new SqlParameter("@folderID", folder.folderID.ToString()); 618 SqlParameter param1 = new SqlParameter("@folderID", folder.folderID.ToString());
618 SqlParameter param2 = new SqlParameter("@parentFolderID", folder.parentID.ToString()); 619 SqlParameter param2 = new SqlParameter("@parentFolderID", folder.parentID.ToString());
619 SqlParameter param3 = new SqlParameter("@keyFolderID", folder.folderID.ToString()); 620 SqlParameter param3 = new SqlParameter("@keyFolderID", folder.folderID.ToString());
@@ -629,8 +630,6 @@ namespace OpenSim.Framework.Data.MSSQL
629 { 630 {
630 MainLog.Instance.Error(e.ToString()); 631 MainLog.Instance.Error(e.ToString());
631 } 632 }
632
633
634 } 633 }
635 634
636 /// <summary> 635 /// <summary>
@@ -645,7 +644,7 @@ namespace OpenSim.Framework.Data.MSSQL
645 foreach (InventoryFolderBase f in subfolderList) 644 foreach (InventoryFolderBase f in subfolderList)
646 folders.Add(f); 645 folders.Add(f);
647 } 646 }
648 647
649 /// <summary> 648 /// <summary>
650 /// Returns all child folders in the hierarchy from the parent folder and down 649 /// Returns all child folders in the hierarchy from the parent folder and down
651 /// </summary> 650 /// </summary>
@@ -672,7 +671,6 @@ namespace OpenSim.Framework.Data.MSSQL
672 IDbCommand cmd = database.Query("DELETE FROM inventoryfolders WHERE folderID=@folderID", param); 671 IDbCommand cmd = database.Query("DELETE FROM inventoryfolders WHERE folderID=@folderID", param);
673 cmd.ExecuteNonQuery(); 672 cmd.ExecuteNonQuery();
674 cmd.Dispose(); 673 cmd.Dispose();
675
676 } 674 }
677 catch (SqlException e) 675 catch (SqlException e)
678 { 676 {
@@ -689,7 +687,8 @@ namespace OpenSim.Framework.Data.MSSQL
689 param["parentFolderID"] = folderID.ToString(); 687 param["parentFolderID"] = folderID.ToString();
690 688
691 689
692 IDbCommand cmd = database.Query("DELETE FROM inventoryitems WHERE parentFolderID=@parentFolderID", param); 690 IDbCommand cmd =
691 database.Query("DELETE FROM inventoryitems WHERE parentFolderID=@parentFolderID", param);
693 cmd.ExecuteNonQuery(); 692 cmd.ExecuteNonQuery();
694 cmd.Dispose(); 693 cmd.Dispose();
695 } 694 }
@@ -724,4 +723,4 @@ namespace OpenSim.Framework.Data.MSSQL
724 } 723 }
725 } 724 }
726 } 725 }
727} 726} \ No newline at end of file
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs
index a5b33ec..c3ec7c6 100644
--- a/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs
@@ -25,14 +25,12 @@
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28using System;
29
30namespace OpenSim.Framework.Data.MSSQL 28namespace OpenSim.Framework.Data.MSSQL
31{ 29{
32 /// <summary> 30 /// <summary>
33 /// An interface to the log database for MySQL 31 /// An interface to the log database for MySQL
34 /// </summary> 32 /// </summary>
35 class MSSQLLogData : ILogData 33 internal class MSSQLLogData : ILogData
36 { 34 {
37 /// <summary> 35 /// <summary>
38 /// The database manager 36 /// The database manager
@@ -51,7 +49,9 @@ namespace OpenSim.Framework.Data.MSSQL
51 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); 49 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id");
52 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); 50 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
53 51
54 database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); 52 database =
53 new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId,
54 settingPassword);
55 } 55 }
56 56
57 /// <summary> 57 /// <summary>
@@ -63,7 +63,8 @@ namespace OpenSim.Framework.Data.MSSQL
63 /// <param name="arguments">The arguments passed to the method</param> 63 /// <param name="arguments">The arguments passed to the method</param>
64 /// <param name="priority">How critical is this?</param> 64 /// <param name="priority">How critical is this?</param>
65 /// <param name="logMessage">The message to log</param> 65 /// <param name="logMessage">The message to log</param>
66 public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage) 66 public void saveLog(string serverDaemon, string target, string methodCall, string arguments, int priority,
67 string logMessage)
67 { 68 {
68 try 69 try
69 { 70 {
@@ -101,4 +102,4 @@ namespace OpenSim.Framework.Data.MSSQL
101 return "0.1"; 102 return "0.1";
102 } 103 }
103 } 104 }
104} 105} \ No newline at end of file
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs
index b009a56..0dc3338 100644
--- a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs
@@ -25,6 +25,7 @@
25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28
28using System; 29using System;
29using System.Collections.Generic; 30using System.Collections.Generic;
30using System.Data; 31using System.Data;
@@ -32,7 +33,6 @@ using System.Data.SqlClient;
32using System.IO; 33using System.IO;
33using System.Reflection; 34using System.Reflection;
34using libsecondlife; 35using libsecondlife;
35
36using OpenSim.Framework.Console; 36using OpenSim.Framework.Console;
37 37
38namespace OpenSim.Framework.Data.MSSQL 38namespace OpenSim.Framework.Data.MSSQL
@@ -40,12 +40,12 @@ namespace OpenSim.Framework.Data.MSSQL
40 /// <summary> 40 /// <summary>
41 /// A management class for the MS SQL Storage Engine 41 /// A management class for the MS SQL Storage Engine
42 /// </summary> 42 /// </summary>
43 class MSSQLManager 43 internal class MSSQLManager
44 { 44 {
45 /// <summary> 45 /// <summary>
46 /// The database connection object 46 /// The database connection object
47 /// </summary> 47 /// </summary>
48 IDbConnection dbcon; 48 private IDbConnection dbcon;
49 49
50 /// <summary> 50 /// <summary>
51 /// Connection string for ADO.net 51 /// Connection string for ADO.net
@@ -60,12 +60,14 @@ namespace OpenSim.Framework.Data.MSSQL
60 /// <param name="username">The username logging into the database</param> 60 /// <param name="username">The username logging into the database</param>
61 /// <param name="password">The password for the user logging in</param> 61 /// <param name="password">The password for the user logging in</param>
62 /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> 62 /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param>
63 public MSSQLManager(string dataSource, string initialCatalog, string persistSecurityInfo, string userId, string password) 63 public MSSQLManager(string dataSource, string initialCatalog, string persistSecurityInfo, string userId,
64 string password)
64 { 65 {
65 try 66 try
66 { 67 {
67 68 connectionString = "Data Source=" + dataSource + ";Initial Catalog=" + initialCatalog +
68 connectionString = "Data Source=" + dataSource + ";Initial Catalog=" + initialCatalog + ";Persist Security Info=" + persistSecurityInfo + ";User ID=" + userId + ";Password=" + password+";"; 69 ";Persist Security Info=" + persistSecurityInfo + ";User ID=" + userId + ";Password=" +
70 password + ";";
69 dbcon = new SqlConnection(connectionString); 71 dbcon = new SqlConnection(connectionString);
70 TestTables(dbcon); 72 TestTables(dbcon);
71 dbcon.Open(); 73 dbcon.Open();
@@ -78,7 +80,7 @@ namespace OpenSim.Framework.Data.MSSQL
78 80
79 private bool TestTables(IDbConnection conn) 81 private bool TestTables(IDbConnection conn)
80 { 82 {
81 IDbCommand cmd = this.Query("SELECT * FROM regions", new Dictionary<string, string>()); 83 IDbCommand cmd = Query("SELECT * FROM regions", new Dictionary<string, string>());
82 //SqlCommand cmd = (SqlCommand)dbcon.CreateCommand(); 84 //SqlCommand cmd = (SqlCommand)dbcon.CreateCommand();
83 //cmd.CommandText = "SELECT * FROM regions"; 85 //cmd.CommandText = "SELECT * FROM regions";
84 try 86 try
@@ -90,7 +92,7 @@ namespace OpenSim.Framework.Data.MSSQL
90 } 92 }
91 catch (Exception) 93 catch (Exception)
92 { 94 {
93 MainLog.Instance.Verbose("DATASTORE", "MSSQL Database doesn't exist... creating"); 95 MainLog.Instance.Verbose("DATASTORE", "MSSQL Database doesn't exist... creating");
94 InitDB(conn); 96 InitDB(conn);
95 } 97 }
96 return true; 98 return true;
@@ -100,66 +102,66 @@ namespace OpenSim.Framework.Data.MSSQL
100 { 102 {
101 string createRegions = defineTable(createRegionsTable()); 103 string createRegions = defineTable(createRegionsTable());
102 Dictionary<string, string> param = new Dictionary<string, string>(); 104 Dictionary<string, string> param = new Dictionary<string, string>();
103 IDbCommand pcmd = this.Query(createRegions, param); 105 IDbCommand pcmd = Query(createRegions, param);
104 if (conn.State == ConnectionState.Closed) { 106 if (conn.State == ConnectionState.Closed)
107 {
105 conn.Open(); 108 conn.Open();
106 } 109 }
107 pcmd.ExecuteNonQuery(); 110 pcmd.ExecuteNonQuery();
108 pcmd.Dispose(); 111 pcmd.Dispose();
109 112
110 this.ExecuteResourceSql("Mssql-users.sql"); 113 ExecuteResourceSql("Mssql-users.sql");
111 this.ExecuteResourceSql("Mssql-agents.sql"); 114 ExecuteResourceSql("Mssql-agents.sql");
112 this.ExecuteResourceSql("Mssql-logs.sql"); 115 ExecuteResourceSql("Mssql-logs.sql");
113 116
114 conn.Close(); 117 conn.Close();
115
116 } 118 }
117 119
118 private DataTable createRegionsTable() 120 private DataTable createRegionsTable()
119 { 121 {
120 DataTable regions = new DataTable("regions"); 122 DataTable regions = new DataTable("regions");
121 123
122 createCol(regions, "regionHandle", typeof(ulong)); 124 createCol(regions, "regionHandle", typeof (ulong));
123 createCol(regions, "regionName", typeof(System.String)); 125 createCol(regions, "regionName", typeof (String));
124 createCol(regions, "uuid", typeof(System.String)); 126 createCol(regions, "uuid", typeof (String));
125 127
126 createCol(regions, "regionRecvKey", typeof(System.String)); 128 createCol(regions, "regionRecvKey", typeof (String));
127 createCol(regions, "regionSecret", typeof(System.String)); 129 createCol(regions, "regionSecret", typeof (String));
128 createCol(regions, "regionSendKey", typeof(System.String)); 130 createCol(regions, "regionSendKey", typeof (String));
129 131
130 createCol(regions, "regionDataURI", typeof(System.String)); 132 createCol(regions, "regionDataURI", typeof (String));
131 createCol(regions, "serverIP", typeof(System.String)); 133 createCol(regions, "serverIP", typeof (String));
132 createCol(regions, "serverPort", typeof(System.String)); 134 createCol(regions, "serverPort", typeof (String));
133 createCol(regions, "serverURI", typeof(System.String)); 135 createCol(regions, "serverURI", typeof (String));
134 136
135 137
136 createCol(regions, "locX", typeof(uint)); 138 createCol(regions, "locX", typeof (uint));
137 createCol(regions, "locY", typeof(uint)); 139 createCol(regions, "locY", typeof (uint));
138 createCol(regions, "locZ", typeof(uint)); 140 createCol(regions, "locZ", typeof (uint));
139 141
140 createCol(regions, "eastOverrideHandle", typeof(ulong)); 142 createCol(regions, "eastOverrideHandle", typeof (ulong));
141 createCol(regions, "westOverrideHandle", typeof(ulong)); 143 createCol(regions, "westOverrideHandle", typeof (ulong));
142 createCol(regions, "southOverrideHandle", typeof(ulong)); 144 createCol(regions, "southOverrideHandle", typeof (ulong));
143 createCol(regions, "northOverrideHandle", typeof(ulong)); 145 createCol(regions, "northOverrideHandle", typeof (ulong));
144 146
145 createCol(regions, "regionAssetURI", typeof(System.String)); 147 createCol(regions, "regionAssetURI", typeof (String));
146 createCol(regions, "regionAssetRecvKey", typeof(System.String)); 148 createCol(regions, "regionAssetRecvKey", typeof (String));
147 createCol(regions, "regionAssetSendKey", typeof(System.String)); 149 createCol(regions, "regionAssetSendKey", typeof (String));
148 150
149 createCol(regions, "regionUserURI", typeof(System.String)); 151 createCol(regions, "regionUserURI", typeof (String));
150 createCol(regions, "regionUserRecvKey", typeof(System.String)); 152 createCol(regions, "regionUserRecvKey", typeof (String));
151 createCol(regions, "regionUserSendKey", typeof(System.String)); 153 createCol(regions, "regionUserSendKey", typeof (String));
152 154
153 createCol(regions, "regionMapTexture", typeof(System.String)); 155 createCol(regions, "regionMapTexture", typeof (String));
154 createCol(regions, "serverHttpPort", typeof(System.String)); 156 createCol(regions, "serverHttpPort", typeof (String));
155 createCol(regions, "serverRemotingPort", typeof(uint)); 157 createCol(regions, "serverRemotingPort", typeof (uint));
156 158
157 // Add in contraints 159 // Add in contraints
158 regions.PrimaryKey = new DataColumn[] { regions.Columns["UUID"] }; 160 regions.PrimaryKey = new DataColumn[] {regions.Columns["UUID"]};
159 return regions; 161 return regions;
160 } 162 }
161 163
162 protected static void createCol(DataTable dt, string name, System.Type type) 164 protected static void createCol(DataTable dt, string name, Type type)
163 { 165 {
164 DataColumn col = new DataColumn(name, type); 166 DataColumn col = new DataColumn(name, type);
165 dt.Columns.Add(col); 167 dt.Columns.Add(col);
@@ -172,10 +174,11 @@ namespace OpenSim.Framework.Data.MSSQL
172 foreach (DataColumn col in dt.Columns) 174 foreach (DataColumn col in dt.Columns)
173 { 175 {
174 if (subsql.Length > 0) 176 if (subsql.Length > 0)
175 { // a map function would rock so much here 177 {
178 // a map function would rock so much here
176 subsql += ",\n"; 179 subsql += ",\n";
177 } 180 }
178 181
179 subsql += col.ColumnName + " " + SqlType(col.DataType); 182 subsql += col.ColumnName + " " + SqlType(col.DataType);
180 if (col == dt.PrimaryKey[0]) 183 if (col == dt.PrimaryKey[0])
181 { 184 {
@@ -192,19 +195,19 @@ namespace OpenSim.Framework.Data.MSSQL
192 // slightly differently. 195 // slightly differently.
193 private static string SqlType(Type type) 196 private static string SqlType(Type type)
194 { 197 {
195 if (type == typeof(System.String)) 198 if (type == typeof (String))
196 { 199 {
197 return "varchar(255)"; 200 return "varchar(255)";
198 } 201 }
199 else if (type == typeof(System.Int32)) 202 else if (type == typeof (Int32))
200 { 203 {
201 return "integer"; 204 return "integer";
202 } 205 }
203 else if (type == typeof(System.Double)) 206 else if (type == typeof (Double))
204 { 207 {
205 return "float"; 208 return "float";
206 } 209 }
207 else if (type == typeof(System.Byte[])) 210 else if (type == typeof (Byte[]))
208 { 211 {
209 return "image"; 212 return "image";
210 } 213 }
@@ -254,14 +257,14 @@ namespace OpenSim.Framework.Data.MSSQL
254 /// <returns>A Sql DB Command</returns> 257 /// <returns>A Sql DB Command</returns>
255 public IDbCommand Query(string sql, Dictionary<string, string> parameters) 258 public IDbCommand Query(string sql, Dictionary<string, string> parameters)
256 { 259 {
257 SqlCommand dbcommand = (SqlCommand)dbcon.CreateCommand(); 260 SqlCommand dbcommand = (SqlCommand) dbcon.CreateCommand();
258 dbcommand.CommandText = sql; 261 dbcommand.CommandText = sql;
259 foreach (KeyValuePair<string, string> param in parameters) 262 foreach (KeyValuePair<string, string> param in parameters)
260 { 263 {
261 dbcommand.Parameters.AddWithValue(param.Key, param.Value); 264 dbcommand.Parameters.AddWithValue(param.Key, param.Value);
262 } 265 }
263 266
264 return (IDbCommand)dbcommand; 267 return (IDbCommand) dbcommand;
265 } 268 }
266 269
267 /// <summary> 270 /// <summary>
@@ -277,20 +280,20 @@ namespace OpenSim.Framework.Data.MSSQL
277 { 280 {
278 // Region Main 281 // Region Main
279 regionprofile.regionHandle = Convert.ToUInt64(reader["regionHandle"]); 282 regionprofile.regionHandle = Convert.ToUInt64(reader["regionHandle"]);
280 regionprofile.regionName = (string)reader["regionName"]; 283 regionprofile.regionName = (string) reader["regionName"];
281 regionprofile.UUID = new LLUUID((string)reader["uuid"]); 284 regionprofile.UUID = new LLUUID((string) reader["uuid"]);
282 285
283 // Secrets 286 // Secrets
284 regionprofile.regionRecvKey = (string)reader["regionRecvKey"]; 287 regionprofile.regionRecvKey = (string) reader["regionRecvKey"];
285 regionprofile.regionSecret = (string)reader["regionSecret"]; 288 regionprofile.regionSecret = (string) reader["regionSecret"];
286 regionprofile.regionSendKey = (string)reader["regionSendKey"]; 289 regionprofile.regionSendKey = (string) reader["regionSendKey"];
287 290
288 // Region Server 291 // Region Server
289 regionprofile.regionDataURI = (string)reader["regionDataURI"]; 292 regionprofile.regionDataURI = (string) reader["regionDataURI"];
290 regionprofile.regionOnline = false; // Needs to be pinged before this can be set. 293 regionprofile.regionOnline = false; // Needs to be pinged before this can be set.
291 regionprofile.serverIP = (string)reader["serverIP"]; 294 regionprofile.serverIP = (string) reader["serverIP"];
292 regionprofile.serverPort = Convert.ToUInt32(reader["serverPort"]); 295 regionprofile.serverPort = Convert.ToUInt32(reader["serverPort"]);
293 regionprofile.serverURI = (string)reader["serverURI"]; 296 regionprofile.serverURI = (string) reader["serverURI"];
294 regionprofile.httpPort = Convert.ToUInt32(reader["serverHttpPort"]); 297 regionprofile.httpPort = Convert.ToUInt32(reader["serverHttpPort"]);
295 regionprofile.remotingPort = Convert.ToUInt32(reader["serverRemotingPort"]); 298 regionprofile.remotingPort = Convert.ToUInt32(reader["serverRemotingPort"]);
296 299
@@ -307,14 +310,14 @@ namespace OpenSim.Framework.Data.MSSQL
307 regionprofile.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"]); 310 regionprofile.regionNorthOverrideHandle = Convert.ToUInt64(reader["northOverrideHandle"]);
308 311
309 // Assets 312 // Assets
310 regionprofile.regionAssetURI = (string)reader["regionAssetURI"]; 313 regionprofile.regionAssetURI = (string) reader["regionAssetURI"];
311 regionprofile.regionAssetRecvKey = (string)reader["regionAssetRecvKey"]; 314 regionprofile.regionAssetRecvKey = (string) reader["regionAssetRecvKey"];
312 regionprofile.regionAssetSendKey = (string)reader["regionAssetSendKey"]; 315 regionprofile.regionAssetSendKey = (string) reader["regionAssetSendKey"];
313 316
314 // Userserver 317 // Userserver
315 regionprofile.regionUserURI = (string)reader["regionUserURI"]; 318 regionprofile.regionUserURI = (string) reader["regionUserURI"];
316 regionprofile.regionUserRecvKey = (string)reader["regionUserRecvKey"]; 319 regionprofile.regionUserRecvKey = (string) reader["regionUserRecvKey"];
317 regionprofile.regionUserSendKey = (string)reader["regionUserSendKey"]; 320 regionprofile.regionUserSendKey = (string) reader["regionUserSendKey"];
318 321
319 // World Map Addition 322 // World Map Addition
320 string tempRegionMap = reader["regionMapTexture"].ToString(); 323 string tempRegionMap = reader["regionMapTexture"].ToString();
@@ -331,7 +334,6 @@ namespace OpenSim.Framework.Data.MSSQL
331 { 334 {
332 reader.Close(); 335 reader.Close();
333 throw new Exception("No rows to return"); 336 throw new Exception("No rows to return");
334
335 } 337 }
336 return regionprofile; 338 return regionprofile;
337 } 339 }
@@ -347,12 +349,12 @@ namespace OpenSim.Framework.Data.MSSQL
347 349
348 if (reader.Read()) 350 if (reader.Read())
349 { 351 {
350 retval.UUID = new LLUUID((string)reader["UUID"]); 352 retval.UUID = new LLUUID((string) reader["UUID"]);
351 retval.username = (string)reader["username"]; 353 retval.username = (string) reader["username"];
352 retval.surname = (string)reader["lastname"]; 354 retval.surname = (string) reader["lastname"];
353 355
354 retval.passwordHash = (string)reader["passwordHash"]; 356 retval.passwordHash = (string) reader["passwordHash"];
355 retval.passwordSalt = (string)reader["passwordSalt"]; 357 retval.passwordSalt = (string) reader["passwordSalt"];
356 358
357 retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString()); 359 retval.homeRegion = Convert.ToUInt64(reader["homeRegion"].ToString());
358 retval.homeLocation = new LLVector3( 360 retval.homeLocation = new LLVector3(
@@ -367,18 +369,17 @@ namespace OpenSim.Framework.Data.MSSQL
367 retval.created = Convert.ToInt32(reader["created"].ToString()); 369 retval.created = Convert.ToInt32(reader["created"].ToString());
368 retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString()); 370 retval.lastLogin = Convert.ToInt32(reader["lastLogin"].ToString());
369 371
370 retval.userInventoryURI = (string)reader["userInventoryURI"]; 372 retval.userInventoryURI = (string) reader["userInventoryURI"];
371 retval.userAssetURI = (string)reader["userAssetURI"]; 373 retval.userAssetURI = (string) reader["userAssetURI"];
372 374
373 retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString()); 375 retval.profileCanDoMask = Convert.ToUInt32(reader["profileCanDoMask"].ToString());
374 retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString()); 376 retval.profileWantDoMask = Convert.ToUInt32(reader["profileWantDoMask"].ToString());
375 377
376 retval.profileAboutText = (string)reader["profileAboutText"]; 378 retval.profileAboutText = (string) reader["profileAboutText"];
377 retval.profileFirstText = (string)reader["profileFirstText"]; 379 retval.profileFirstText = (string) reader["profileFirstText"];
378
379 retval.profileImage = new LLUUID((string)reader["profileImage"]);
380 retval.profileFirstImage = new LLUUID((string)reader["profileFirstImage"]);
381 380
381 retval.profileImage = new LLUUID((string) reader["profileImage"]);
382 retval.profileFirstImage = new LLUUID((string) reader["profileFirstImage"]);
382 } 383 }
383 else 384 else
384 { 385 {
@@ -399,12 +400,12 @@ namespace OpenSim.Framework.Data.MSSQL
399 if (reader.Read()) 400 if (reader.Read())
400 { 401 {
401 // Agent IDs 402 // Agent IDs
402 retval.UUID = new LLUUID((string)reader["UUID"]); 403 retval.UUID = new LLUUID((string) reader["UUID"]);
403 retval.sessionID = new LLUUID((string)reader["sessionID"]); 404 retval.sessionID = new LLUUID((string) reader["sessionID"]);
404 retval.secureSessionID = new LLUUID((string)reader["secureSessionID"]); 405 retval.secureSessionID = new LLUUID((string) reader["secureSessionID"]);
405 406
406 // Agent Who? 407 // Agent Who?
407 retval.agentIP = (string)reader["agentIP"]; 408 retval.agentIP = (string) reader["agentIP"];
408 retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString()); 409 retval.agentPort = Convert.ToUInt32(reader["agentPort"].ToString());
409 retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString()); 410 retval.agentOnline = Convert.ToBoolean(reader["agentOnline"].ToString());
410 411
@@ -413,9 +414,9 @@ namespace OpenSim.Framework.Data.MSSQL
413 retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString()); 414 retval.logoutTime = Convert.ToInt32(reader["logoutTime"].ToString());
414 415
415 // Current position 416 // Current position
416 retval.currentRegion = (string)reader["currentRegion"]; 417 retval.currentRegion = (string) reader["currentRegion"];
417 retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString()); 418 retval.currentHandle = Convert.ToUInt64(reader["currentHandle"].ToString());
418 LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos); 419 LLVector3.TryParse((string) reader["currentPos"], out retval.currentPos);
419 } 420 }
420 else 421 else
421 { 422 {
@@ -426,20 +427,19 @@ namespace OpenSim.Framework.Data.MSSQL
426 427
427 public AssetBase getAssetRow(IDataReader reader) 428 public AssetBase getAssetRow(IDataReader reader)
428 { 429 {
429 AssetBase asset = new AssetBase(); 430 AssetBase asset = new AssetBase();
430 if (reader.Read()) 431 if (reader.Read())
431 { 432 {
432 // Region Main 433 // Region Main
433 434
434 asset = new AssetBase(); 435 asset = new AssetBase();
435 asset.Data = (byte[])reader["data"]; 436 asset.Data = (byte[]) reader["data"];
436 asset.Description = (string)reader["description"]; 437 asset.Description = (string) reader["description"];
437 asset.FullID = new LLUUID((string)reader["id"]); 438 asset.FullID = new LLUUID((string) reader["id"]);
438 asset.InvType = Convert.ToSByte(reader["invType"]); 439 asset.InvType = Convert.ToSByte(reader["invType"]);
439 asset.Local = Convert.ToBoolean(reader["local"]); // ((sbyte)reader["local"]) != 0 ? true : false; 440 asset.Local = Convert.ToBoolean(reader["local"]); // ((sbyte)reader["local"]) != 0 ? true : false;
440 asset.Name = (string)reader["name"]; 441 asset.Name = (string) reader["name"];
441 asset.Type = Convert.ToSByte(reader["assetType"]); 442 asset.Type = Convert.ToSByte(reader["assetType"]);
442
443 } 443 }
444 else 444 else
445 { 445 {
@@ -455,15 +455,19 @@ namespace OpenSim.Framework.Data.MSSQL
455 /// <returns>Successful?</returns> 455 /// <returns>Successful?</returns>
456 public bool insertRegionRow(RegionProfileData profile) 456 public bool insertRegionRow(RegionProfileData profile)
457 { 457 {
458
459 //Insert new region 458 //Insert new region
460 string sql = "INSERT INTO regions ([regionHandle], [regionName], [uuid], [regionRecvKey], [regionSecret], [regionSendKey], [regionDataURI], "; 459 string sql =
461 sql += "[serverIP], [serverPort], [serverURI], [locX], [locY], [locZ], [eastOverrideHandle], [westOverrideHandle], [southOverrideHandle], [northOverrideHandle], [regionAssetURI], [regionAssetRecvKey], "; 460 "INSERT INTO regions ([regionHandle], [regionName], [uuid], [regionRecvKey], [regionSecret], [regionSendKey], [regionDataURI], ";
462 sql += "[regionAssetSendKey], [regionUserURI], [regionUserRecvKey], [regionUserSendKey], [regionMapTexture], [serverHttpPort], [serverRemotingPort]) VALUES "; 461 sql +=
462 "[serverIP], [serverPort], [serverURI], [locX], [locY], [locZ], [eastOverrideHandle], [westOverrideHandle], [southOverrideHandle], [northOverrideHandle], [regionAssetURI], [regionAssetRecvKey], ";
463 sql +=
464 "[regionAssetSendKey], [regionUserURI], [regionUserRecvKey], [regionUserSendKey], [regionMapTexture], [serverHttpPort], [serverRemotingPort]) VALUES ";
463 465
464 sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, "; 466 sql += "(@regionHandle, @regionName, @uuid, @regionRecvKey, @regionSecret, @regionSendKey, @regionDataURI, ";
465 sql += "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, "; 467 sql +=
466 sql += "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey, @regionMapTexture, @serverHttpPort, @serverRemotingPort);"; 468 "@serverIP, @serverPort, @serverURI, @locX, @locY, @locZ, @eastOverrideHandle, @westOverrideHandle, @southOverrideHandle, @northOverrideHandle, @regionAssetURI, @regionAssetRecvKey, ";
469 sql +=
470 "@regionAssetSendKey, @regionUserURI, @regionUserRecvKey, @regionUserSendKey, @regionMapTexture, @serverHttpPort, @serverRemotingPort);";
467 471
468 Dictionary<string, string> parameters = new Dictionary<string, string>(); 472 Dictionary<string, string> parameters = new Dictionary<string, string>();
469 473
@@ -498,9 +502,9 @@ namespace OpenSim.Framework.Data.MSSQL
498 bool returnval = false; 502 bool returnval = false;
499 503
500 try 504 try
501 { 505 {
502 IDbCommand result = Query(sql, parameters); 506 IDbCommand result = Query(sql, parameters);
503 507
504 if (result.ExecuteNonQuery() == 1) 508 if (result.ExecuteNonQuery() == 1)
505 returnval = true; 509 returnval = true;
506 510
@@ -509,15 +513,12 @@ namespace OpenSim.Framework.Data.MSSQL
509 catch (Exception e) 513 catch (Exception e)
510 { 514 {
511 MainLog.Instance.Error("MSSQLManager : " + e.ToString()); 515 MainLog.Instance.Error("MSSQLManager : " + e.ToString());
512
513 } 516 }
514 517
515 return returnval; 518 return returnval;
516
517 } 519 }
518 520
519 521
520
521 /// <summary> 522 /// <summary>
522 /// Inserts a new row into the log database 523 /// Inserts a new row into the log database
523 /// </summary> 524 /// </summary>
@@ -528,7 +529,8 @@ namespace OpenSim.Framework.Data.MSSQL
528 /// <param name="priority">How critical is this?</param> 529 /// <param name="priority">How critical is this?</param>
529 /// <param name="logMessage">Extra message info</param> 530 /// <param name="logMessage">Extra message info</param>
530 /// <returns>Saved successfully?</returns> 531 /// <returns>Saved successfully?</returns>
531 public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority, string logMessage) 532 public bool insertLogRow(string serverDaemon, string target, string methodCall, string arguments, int priority,
533 string logMessage)
532 { 534 {
533 string sql = "INSERT INTO logs ([target], [server], [method], [arguments], [priority], [message]) VALUES "; 535 string sql = "INSERT INTO logs ([target], [server], [method], [arguments], [priority], [message]) VALUES ";
534 sql += "(@target, @server, @method, @arguments, @priority, @message);"; 536 sql += "(@target, @server, @method, @arguments, @priority, @message);";
@@ -588,19 +590,26 @@ namespace OpenSim.Framework.Data.MSSQL
588 /// <param name="profileImage">UUID for profile image</param> 590 /// <param name="profileImage">UUID for profile image</param>
589 /// <param name="firstImage">UUID for firstlife image</param> 591 /// <param name="firstImage">UUID for firstlife image</param>
590 /// <returns>Success?</returns> 592 /// <returns>Success?</returns>
591 public bool insertUserRow(libsecondlife.LLUUID uuid, string username, string lastname, string passwordHash, string passwordSalt, UInt64 homeRegion, float homeLocX, float homeLocY, float homeLocZ, 593 public bool insertUserRow(LLUUID uuid, string username, string lastname, string passwordHash,
592 float homeLookAtX, float homeLookAtY, float homeLookAtZ, int created, int lastlogin, string inventoryURI, string assetURI, uint canDoMask, uint wantDoMask, string aboutText, string firstText, 594 string passwordSalt, UInt64 homeRegion, float homeLocX, float homeLocY, float homeLocZ,
593 libsecondlife.LLUUID profileImage, libsecondlife.LLUUID firstImage) 595 float homeLookAtX, float homeLookAtY, float homeLookAtZ, int created, int lastlogin,
596 string inventoryURI, string assetURI, uint canDoMask, uint wantDoMask,
597 string aboutText, string firstText,
598 LLUUID profileImage, LLUUID firstImage)
594 { 599 {
595 string sql = "INSERT INTO users "; 600 string sql = "INSERT INTO users ";
596 sql += "([UUID], [username], [lastname], [passwordHash], [passwordSalt], [homeRegion], "; 601 sql += "([UUID], [username], [lastname], [passwordHash], [passwordSalt], [homeRegion], ";
597 sql += "[homeLocationX], [homeLocationY], [homeLocationZ], [homeLookAtX], [homeLookAtY], [homeLookAtZ], [created], "; 602 sql +=
598 sql += "[lastLogin], [userInventoryURI], [userAssetURI], [profileCanDoMask], [profileWantDoMask], [profileAboutText], "; 603 "[homeLocationX], [homeLocationY], [homeLocationZ], [homeLookAtX], [homeLookAtY], [homeLookAtZ], [created], ";
604 sql +=
605 "[lastLogin], [userInventoryURI], [userAssetURI], [profileCanDoMask], [profileWantDoMask], [profileAboutText], ";
599 sql += "[profileFirstText], [profileImage], [profileFirstImage]) VALUES "; 606 sql += "[profileFirstText], [profileImage], [profileFirstImage]) VALUES ";
600 607
601 sql += "(@UUID, @username, @lastname, @passwordHash, @passwordSalt, @homeRegion, "; 608 sql += "(@UUID, @username, @lastname, @passwordHash, @passwordSalt, @homeRegion, ";
602 sql += "@homeLocationX, @homeLocationY, @homeLocationZ, @homeLookAtX, @homeLookAtY, @homeLookAtZ, @created, "; 609 sql +=
603 sql += "@lastLogin, @userInventoryURI, @userAssetURI, @profileCanDoMask, @profileWantDoMask, @profileAboutText, "; 610 "@homeLocationX, @homeLocationY, @homeLocationZ, @homeLookAtX, @homeLookAtY, @homeLookAtZ, @created, ";
611 sql +=
612 "@lastLogin, @userInventoryURI, @userAssetURI, @profileCanDoMask, @profileWantDoMask, @profileAboutText, ";
604 sql += "@profileFirstText, @profileImage, @profileFirstImage);"; 613 sql += "@profileFirstText, @profileImage, @profileFirstImage);";
605 614
606 Dictionary<string, string> parameters = new Dictionary<string, string>(); 615 Dictionary<string, string> parameters = new Dictionary<string, string>();
@@ -624,13 +633,13 @@ namespace OpenSim.Framework.Data.MSSQL
624 parameters["profileWantDoMask"] = "0"; 633 parameters["profileWantDoMask"] = "0";
625 parameters["profileAboutText"] = ""; 634 parameters["profileAboutText"] = "";
626 parameters["profileFirstText"] = ""; 635 parameters["profileFirstText"] = "";
627 parameters["profileImage"] = libsecondlife.LLUUID.Zero.ToString(); 636 parameters["profileImage"] = LLUUID.Zero.ToString();
628 parameters["profileFirstImage"] = libsecondlife.LLUUID.Zero.ToString(); 637 parameters["profileFirstImage"] = LLUUID.Zero.ToString();
629 638
630 bool returnval = false; 639 bool returnval = false;
631 640
632 try 641 try
633 { 642 {
634 IDbCommand result = Query(sql, parameters); 643 IDbCommand result = Query(sql, parameters);
635 644
636 if (result.ExecuteNonQuery() == 1) 645 if (result.ExecuteNonQuery() == 1)
@@ -655,8 +664,7 @@ namespace OpenSim.Framework.Data.MSSQL
655 { 664 {
656 try 665 try
657 { 666 {
658 667 SqlCommand cmd = new SqlCommand(getResourceString(name), (SqlConnection) dbcon);
659 SqlCommand cmd = new SqlCommand(getResourceString(name), (SqlConnection)dbcon);
660 cmd.ExecuteNonQuery(); 668 cmd.ExecuteNonQuery();
661 cmd.Dispose(); 669 cmd.Dispose();
662 } 670 }
@@ -668,7 +676,7 @@ namespace OpenSim.Framework.Data.MSSQL
668 676
669 public SqlConnection getConnection() 677 public SqlConnection getConnection()
670 { 678 {
671 return (SqlConnection)dbcon; 679 return (SqlConnection) dbcon;
672 } 680 }
673 681
674 /// <summary> 682 /// <summary>
@@ -681,14 +689,15 @@ namespace OpenSim.Framework.Data.MSSQL
681 { 689 {
682 Dictionary<string, string> param = new Dictionary<string, string>(); 690 Dictionary<string, string> param = new Dictionary<string, string>();
683 param["dbname"] = dbcon.Database; 691 param["dbname"] = dbcon.Database;
684 IDbCommand tablesCmd = this.Query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG=@dbname", param); 692 IDbCommand tablesCmd =
693 Query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG=@dbname", param);
685 using (IDataReader tables = tablesCmd.ExecuteReader()) 694 using (IDataReader tables = tablesCmd.ExecuteReader())
686 { 695 {
687 while (tables.Read()) 696 while (tables.Read())
688 { 697 {
689 try 698 try
690 { 699 {
691 string tableName = (string)tables["TABLE_NAME"]; 700 string tableName = (string) tables["TABLE_NAME"];
692 if (tableList.ContainsKey(tableName)) 701 if (tableList.ContainsKey(tableName))
693 tableList[tableName] = tableName; 702 tableList[tableName] = tableName;
694 } 703 }
@@ -704,7 +713,7 @@ namespace OpenSim.Framework.Data.MSSQL
704 713
705 private string getResourceString(string name) 714 private string getResourceString(string name)
706 { 715 {
707 Assembly assem = this.GetType().Assembly; 716 Assembly assem = GetType().Assembly;
708 string[] names = assem.GetManifestResourceNames(); 717 string[] names = assem.GetManifestResourceNames();
709 718
710 foreach (string s in names) 719 foreach (string s in names)
@@ -726,16 +735,14 @@ namespace OpenSim.Framework.Data.MSSQL
726 /// <returns>A string containing the DB provider</returns> 735 /// <returns>A string containing the DB provider</returns>
727 public string getVersion() 736 public string getVersion()
728 { 737 {
729 System.Reflection.Module module = this.GetType().Module; 738 Module module = GetType().Module;
730 string dllName = module.Assembly.ManifestModule.Name; 739 string dllName = module.Assembly.ManifestModule.Name;
731 Version dllVersion = module.Assembly.GetName().Version; 740 Version dllVersion = module.Assembly.GetName().Version;
732 741
733 742
734 return string.Format("{0}.{1}.{2}.{3}", dllVersion.Major, dllVersion.Minor, dllVersion.Build, dllVersion.Revision); 743 return
744 string.Format("{0}.{1}.{2}.{3}", dllVersion.Major, dllVersion.Minor, dllVersion.Build,
745 dllVersion.Revision);
735 } 746 }
736
737 } 747 }
738 748} \ No newline at end of file
739
740
741}
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs
index eac9826..01ef559 100644
--- a/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs
+++ b/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs
@@ -37,7 +37,7 @@ namespace OpenSim.Framework.Data.MSSQL
37 /// <summary> 37 /// <summary>
38 /// A database interface class to a user profile storage system 38 /// A database interface class to a user profile storage system
39 /// </summary> 39 /// </summary>
40 class MSSQLUserData : IUserData 40 internal class MSSQLUserData : IUserData
41 { 41 {
42 /// <summary> 42 /// <summary>
43 /// Database manager for MySQL 43 /// Database manager for MySQL
@@ -58,7 +58,9 @@ namespace OpenSim.Framework.Data.MSSQL
58 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); 58 string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id");
59 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); 59 string settingPassword = GridDataMySqlFile.ParseFileReadValue("password");
60 60
61 database = new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, settingPassword); 61 database =
62 new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId,
63 settingPassword);
62 } 64 }
63 65
64 /// <summary> 66 /// <summary>
@@ -77,11 +79,12 @@ namespace OpenSim.Framework.Data.MSSQL
77 param["first"] = user; 79 param["first"] = user;
78 param["second"] = last; 80 param["second"] = last;
79 81
80 IDbCommand result = database.Query("SELECT * FROM users WHERE username = @first AND lastname = @second", param); 82 IDbCommand result =
83 database.Query("SELECT * FROM users WHERE username = @first AND lastname = @second", param);
81 IDataReader reader = result.ExecuteReader(); 84 IDataReader reader = result.ExecuteReader();
82 85
83 UserProfileData row = database.readUserRow(reader); 86 UserProfileData row = database.readUserRow(reader);
84 87
85 reader.Close(); 88 reader.Close();
86 result.Dispose(); 89 result.Dispose();
87 90
@@ -96,9 +99,9 @@ namespace OpenSim.Framework.Data.MSSQL
96 } 99 }
97 } 100 }
98 101
99 public List<OpenSim.Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query) 102 public List<Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query)
100 { 103 {
101 List<OpenSim.Framework.AvatarPickerAvatar> returnlist = new List<OpenSim.Framework.AvatarPickerAvatar>(); 104 List<Framework.AvatarPickerAvatar> returnlist = new List<Framework.AvatarPickerAvatar>();
102 string[] querysplit; 105 string[] querysplit;
103 querysplit = query.Split(' '); 106 querysplit = query.Split(' ');
104 if (querysplit.Length == 2) 107 if (querysplit.Length == 2)
@@ -112,18 +115,19 @@ namespace OpenSim.Framework.Data.MSSQL
112 param["second"] = querysplit[1]; 115 param["second"] = querysplit[1];
113 116
114 IDbCommand result = 117 IDbCommand result =
115 database.Query("SELECT UUID,username,surname FROM users WHERE username = @first AND lastname = @second", param); 118 database.Query(
119 "SELECT UUID,username,surname FROM users WHERE username = @first AND lastname = @second",
120 param);
116 IDataReader reader = result.ExecuteReader(); 121 IDataReader reader = result.ExecuteReader();
117 122
118 123
119 while (reader.Read()) 124 while (reader.Read())
120 { 125 {
121 OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar(); 126 Framework.AvatarPickerAvatar user = new Framework.AvatarPickerAvatar();
122 user.AvatarID = new LLUUID((string)reader["UUID"]); 127 user.AvatarID = new LLUUID((string) reader["UUID"]);
123 user.firstName = (string)reader["username"]; 128 user.firstName = (string) reader["username"];
124 user.lastName = (string)reader["surname"]; 129 user.lastName = (string) reader["surname"];
125 returnlist.Add(user); 130 returnlist.Add(user);
126
127 } 131 }
128 reader.Close(); 132 reader.Close();
129 result.Dispose(); 133 result.Dispose();
@@ -135,13 +139,9 @@ namespace OpenSim.Framework.Data.MSSQL
135 MainLog.Instance.Error(e.ToString()); 139 MainLog.Instance.Error(e.ToString());
136 return returnlist; 140 return returnlist;
137 } 141 }
138
139
140
141 } 142 }
142 else if (querysplit.Length == 1) 143 else if (querysplit.Length == 1)
143 { 144 {
144
145 try 145 try
146 { 146 {
147 lock (database) 147 lock (database)
@@ -151,18 +151,19 @@ namespace OpenSim.Framework.Data.MSSQL
151 param["second"] = querysplit[1]; 151 param["second"] = querysplit[1];
152 152
153 IDbCommand result = 153 IDbCommand result =
154 database.Query("SELECT UUID,username,surname FROM users WHERE username = @first OR lastname = @second", param); 154 database.Query(
155 "SELECT UUID,username,surname FROM users WHERE username = @first OR lastname = @second",
156 param);
155 IDataReader reader = result.ExecuteReader(); 157 IDataReader reader = result.ExecuteReader();
156 158
157 159
158 while (reader.Read()) 160 while (reader.Read())
159 { 161 {
160 OpenSim.Framework.AvatarPickerAvatar user = new OpenSim.Framework.AvatarPickerAvatar(); 162 Framework.AvatarPickerAvatar user = new Framework.AvatarPickerAvatar();
161 user.AvatarID = new LLUUID((string)reader["UUID"]); 163 user.AvatarID = new LLUUID((string) reader["UUID"]);
162 user.firstName = (string)reader["username"]; 164 user.firstName = (string) reader["username"];
163 user.lastName = (string)reader["surname"]; 165 user.lastName = (string) reader["surname"];
164 returnlist.Add(user); 166 returnlist.Add(user);
165
166 } 167 }
167 reader.Close(); 168 reader.Close();
168 result.Dispose(); 169 result.Dispose();
@@ -268,21 +269,25 @@ namespace OpenSim.Framework.Data.MSSQL
268 /// <param name="user">The user profile to create</param> 269 /// <param name="user">The user profile to create</param>
269 public void AddNewUserProfile(UserProfileData user) 270 public void AddNewUserProfile(UserProfileData user)
270 { 271 {
271 try 272 try
272 { 273 {
273 lock (database) 274 lock (database)
274 { 275 {
275 database.insertUserRow(user.UUID, user.username, user.surname, user.passwordHash, user.passwordSalt, user.homeRegion, user.homeLocation.X, user.homeLocation.Y, user.homeLocation.Z, 276 database.insertUserRow(user.UUID, user.username, user.surname, user.passwordHash, user.passwordSalt,
276 user.homeLookAt.X, user.homeLookAt.Y, user.homeLookAt.Z, user.created, user.lastLogin, user.userInventoryURI, user.userAssetURI, user.profileCanDoMask, user.profileWantDoMask, 277 user.homeRegion, user.homeLocation.X, user.homeLocation.Y,
277 user.profileAboutText, user.profileFirstText, user.profileImage, user.profileFirstImage); 278 user.homeLocation.Z,
278 } 279 user.homeLookAt.X, user.homeLookAt.Y, user.homeLookAt.Z, user.created,
279 } 280 user.lastLogin, user.userInventoryURI, user.userAssetURI,
280 catch (Exception e) 281 user.profileCanDoMask, user.profileWantDoMask,
281 { 282 user.profileAboutText, user.profileFirstText, user.profileImage,
282 database.Reconnect(); 283 user.profileFirstImage);
283 MainLog.Instance.Error(e.ToString()); 284 }
284 } 285 }
285 286 catch (Exception e)
287 {
288 database.Reconnect();
289 MainLog.Instance.Error(e.ToString());
290 }
286 } 291 }
287 292
288 /// <summary> 293 /// <summary>
@@ -293,34 +298,33 @@ namespace OpenSim.Framework.Data.MSSQL
293 { 298 {
294 // Do nothing. 299 // Do nothing.
295 } 300 }
296 301
297 302
298 public bool UpdateUserProfile(UserProfileData user) 303 public bool UpdateUserProfile(UserProfileData user)
299 { 304 {
300
301 SqlCommand command = new SqlCommand("UPDATE users set UUID = @uuid, " + 305 SqlCommand command = new SqlCommand("UPDATE users set UUID = @uuid, " +
302 "username = @username, " + 306 "username = @username, " +
303 "lastname = @lastname," + 307 "lastname = @lastname," +
304 "passwordHash = @passwordHash," + 308 "passwordHash = @passwordHash," +
305 "passwordSalt = @passwordSalt," + 309 "passwordSalt = @passwordSalt," +
306 "homeRegion = @homeRegion," + 310 "homeRegion = @homeRegion," +
307 "homeLocationX = @homeLocationX," + 311 "homeLocationX = @homeLocationX," +
308 "homeLocationY = @homeLocationY," + 312 "homeLocationY = @homeLocationY," +
309 "homeLocationZ = @homeLocationZ," + 313 "homeLocationZ = @homeLocationZ," +
310 "homeLookAtX = @homeLookAtX," + 314 "homeLookAtX = @homeLookAtX," +
311 "homeLookAtY = @homeLookAtY," + 315 "homeLookAtY = @homeLookAtY," +
312 "homeLookAtZ = @homeLookAtZ," + 316 "homeLookAtZ = @homeLookAtZ," +
313 "created = @created," + 317 "created = @created," +
314 "lastLogin = @lastLogin," + 318 "lastLogin = @lastLogin," +
315 "userInventoryURI = @userInventoryURI," + 319 "userInventoryURI = @userInventoryURI," +
316 "userAssetURI = @userAssetURI," + 320 "userAssetURI = @userAssetURI," +
317 "profileCanDoMask = @profileCanDoMask," + 321 "profileCanDoMask = @profileCanDoMask," +
318 "profileWantDoMask = @profileWantDoMask," + 322 "profileWantDoMask = @profileWantDoMask," +
319 "profileAboutText = @profileAboutText," + 323 "profileAboutText = @profileAboutText," +
320 "profileFirstText = @profileFirstText," + 324 "profileFirstText = @profileFirstText," +
321 "profileImage = @profileImage," + 325 "profileImage = @profileImage," +
322 "profileFirstImage = @profileFirstImage where " + 326 "profileFirstImage = @profileFirstImage where " +
323 "UUID = @keyUUUID;", database.getConnection()); 327 "UUID = @keyUUUID;", database.getConnection());
324 SqlParameter param1 = new SqlParameter("@uuid", user.UUID.ToString()); 328 SqlParameter param1 = new SqlParameter("@uuid", user.UUID.ToString());
325 SqlParameter param2 = new SqlParameter("@username", user.username); 329 SqlParameter param2 = new SqlParameter("@username", user.username);
326 SqlParameter param3 = new SqlParameter("@lastname", user.surname); 330 SqlParameter param3 = new SqlParameter("@lastname", user.surname);
@@ -341,8 +345,8 @@ namespace OpenSim.Framework.Data.MSSQL
341 SqlParameter param18 = new SqlParameter("@profileWantDoMask", Convert.ToInt32(user.profileWantDoMask)); 345 SqlParameter param18 = new SqlParameter("@profileWantDoMask", Convert.ToInt32(user.profileWantDoMask));
342 SqlParameter param19 = new SqlParameter("@profileAboutText", user.profileAboutText); 346 SqlParameter param19 = new SqlParameter("@profileAboutText", user.profileAboutText);
343 SqlParameter param20 = new SqlParameter("@profileFirstText", user.profileFirstText); 347 SqlParameter param20 = new SqlParameter("@profileFirstText", user.profileFirstText);
344 SqlParameter param21 = new SqlParameter("@profileImage", libsecondlife.LLUUID.Zero.ToString()); 348 SqlParameter param21 = new SqlParameter("@profileImage", LLUUID.Zero.ToString());
345 SqlParameter param22 = new SqlParameter("@profileFirstImage", libsecondlife.LLUUID.Zero.ToString()); 349 SqlParameter param22 = new SqlParameter("@profileFirstImage", LLUUID.Zero.ToString());
346 SqlParameter param23 = new SqlParameter("@keyUUUID", user.UUID.ToString()); 350 SqlParameter param23 = new SqlParameter("@keyUUUID", user.UUID.ToString());
347 command.Parameters.Add(param1); 351 command.Parameters.Add(param1);
348 command.Parameters.Add(param2); 352 command.Parameters.Add(param2);
@@ -370,9 +374,12 @@ namespace OpenSim.Framework.Data.MSSQL
370 try 374 try
371 { 375 {
372 int affected = command.ExecuteNonQuery(); 376 int affected = command.ExecuteNonQuery();
373 if (affected != 0) { 377 if (affected != 0)
378 {
374 return true; 379 return true;
375 } else { 380 }
381 else
382 {
376 return false; 383 return false;
377 } 384 }
378 } 385 }
@@ -433,6 +440,5 @@ namespace OpenSim.Framework.Data.MSSQL
433 public void runQuery(string query) 440 public void runQuery(string query)
434 { 441 {
435 } 442 }
436
437 } 443 }
438} 444} \ No newline at end of file