aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/MySQL
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Data/MySQL')
-rw-r--r--OpenSim/Data/MySQL/MySQLXInventoryData.cs94
1 files changed, 92 insertions, 2 deletions
diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
index cccc500..7a3b5b4 100644
--- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs
+++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs
@@ -42,12 +42,12 @@ namespace OpenSim.Data.MySQL
42 /// </summary> 42 /// </summary>
43 public class MySQLXInventoryData : IXInventoryData 43 public class MySQLXInventoryData : IXInventoryData
44 { 44 {
45 private MySQLGenericTableHandler<XInventoryFolder> m_Folders; 45 private MySqlFolderHandler m_Folders;
46 private MySqlItemHandler m_Items; 46 private MySqlItemHandler m_Items;
47 47
48 public MySQLXInventoryData(string conn, string realm) 48 public MySQLXInventoryData(string conn, string realm)
49 { 49 {
50 m_Folders = new MySQLGenericTableHandler<XInventoryFolder>( 50 m_Folders = new MySqlFolderHandler(
51 conn, "inventoryfolders", "InventoryStore"); 51 conn, "inventoryfolders", "InventoryStore");
52 m_Items = new MySqlItemHandler( 52 m_Items = new MySqlItemHandler(
53 conn, "inventoryitems", String.Empty); 53 conn, "inventoryitems", String.Empty);
@@ -106,6 +106,11 @@ namespace OpenSim.Data.MySQL
106 return m_Items.MoveItem(id, newParent); 106 return m_Items.MoveItem(id, newParent);
107 } 107 }
108 108
109 public bool MoveFolder(string id, string newParent)
110 {
111 return m_Folders.MoveFolder(id, newParent);
112 }
113
109 public XInventoryItem[] GetActiveGestures(UUID principalID) 114 public XInventoryItem[] GetActiveGestures(UUID principalID)
110 { 115 {
111 return m_Items.GetActiveGestures(principalID); 116 return m_Items.GetActiveGestures(principalID);
@@ -275,4 +280,89 @@ namespace OpenSim.Data.MySQL
275 return true; 280 return true;
276 } 281 }
277 } 282 }
283
284 public class MySqlFolderHandler : MySQLGenericTableHandler<XInventoryFolder>
285 {
286// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
287
288 public MySqlFolderHandler(string c, string t, string m) :
289 base(c, t, m)
290 {
291 }
292
293 public bool MoveFolder(string id, string newParentFolderID)
294 {
295 XInventoryFolder[] folders = Get(new string[] { "folderID" }, new string[] { id });
296
297 if (folders.Length == 0)
298 return false;
299
300 UUID oldParentFolderUUID = folders[0].parentFolderID;
301
302 using (MySqlCommand cmd = new MySqlCommand())
303 {
304 cmd.CommandText
305 = String.Format(
306 "update {0} set parentFolderID = ?ParentFolderID where folderID = ?folderID", m_Realm);
307 cmd.Parameters.AddWithValue("?ParentFolderID", newParentFolderID);
308 cmd.Parameters.AddWithValue("?folderID", id);
309
310 if (ExecuteNonQuery(cmd) == 0)
311 return false;
312 }
313
314 IncrementFolderVersion(oldParentFolderUUID);
315 IncrementFolderVersion(newParentFolderID);
316
317 return true;
318 }
319
320 public override bool Store(XInventoryFolder folder)
321 {
322 if (!base.Store(folder))
323 return false;
324
325 IncrementFolderVersion(folder.parentFolderID);
326
327 return true;
328 }
329
330 private bool IncrementFolderVersion(UUID folderID)
331 {
332 return IncrementFolderVersion(folderID.ToString());
333 }
334
335 private bool IncrementFolderVersion(string folderID)
336 {
337// m_log.DebugFormat("[MYSQL FOLDER HANDLER]: Incrementing version on folder {0}", folderID);
338// Util.PrintCallStack();
339
340 using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
341 {
342 dbcon.Open();
343
344 using (MySqlCommand cmd = new MySqlCommand())
345 {
346 cmd.Connection = dbcon;
347
348 cmd.CommandText = String.Format("update inventoryfolders set version=version+1 where folderID = ?folderID");
349 cmd.Parameters.AddWithValue("?folderID", folderID);
350
351 try
352 {
353 cmd.ExecuteNonQuery();
354 }
355 catch (Exception)
356 {
357 return false;
358 }
359 cmd.Dispose();
360 }
361
362 dbcon.Close();
363 }
364
365 return true;
366 }
367 }
278} \ No newline at end of file 368} \ No newline at end of file