From 8143c597fc5f62ec0d931d2d5b887730e06aec04 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Thu, 27 Sep 2007 13:25:45 +0000 Subject: * Tleiades grid mode inventory (#444) - thanx Tleiades! * updated to rev 1413 on libsecondlife.dll and libsecondlife.dll.config (#423) --- OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs | 58 +++++++++------------- OpenSim/Framework/Data.MySQL/MySQLManager.cs | 58 +++++++++++++--------- 2 files changed, 58 insertions(+), 58 deletions(-) (limited to 'OpenSim/Framework/Data.MySQL') diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs index 5009d9e..8a7e869 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs @@ -132,7 +132,7 @@ namespace OpenSim.Framework.Data.MySQL param["?uuid"] = user.ToStringHyphenated(); param["?zero"] = LLUUID.Zero.ToStringHyphenated(); - IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param); + IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND (agentID = ?uuid OR category = 0)", param); IDataReader reader = result.ExecuteReader(); List items = database.readInventoryFolders(reader); @@ -152,40 +152,6 @@ namespace OpenSim.Framework.Data.MySQL } /// - /// Returns the users inventory root folder. - /// - /// - /// - public InventoryFolderBase getUserRootFolder(LLUUID user) - { - try - { - lock (database) - { - Dictionary param = new Dictionary(); - param["?uuid"] = user.ToStringHyphenated(); - param["?zero"] = LLUUID.Zero.ToStringHyphenated(); - - IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param); - IDataReader reader = result.ExecuteReader(); - - List items = database.readInventoryFolders(reader); - InventoryFolderBase rootFolder = items[0]; //should only be one folder with parent set to zero (the root one). - reader.Close(); - result.Dispose(); - - return rootFolder; - } - } - catch (Exception e) - { - database.Reconnect(); - Console.WriteLine(e.ToString()); - return null; - } - } - - /// /// Returns a list of folders in a users inventory contained within the specified folder /// /// The folder to search @@ -348,5 +314,27 @@ namespace OpenSim.Framework.Data.MySQL { addInventoryFolder(folder); } + + public void deleteInventoryCategory(InventoryCategory inventoryCategory) + { + try + { + lock (database) { + IDbCommand cmd = database.Query(string.Format("DELETE FROM inventoryitems WHERE parentFolderID IN (SELECT folderId FROM inventoryfolders WHERE category={0})", (byte)inventoryCategory), null); + cmd.ExecuteNonQuery(); + + + cmd = database.Query(string.Format("DELETE FROM inventoryfolders WHERE category={0}", (byte)inventoryCategory), null); + cmd.ExecuteNonQuery(); + } + + } + catch (Exception e) + { + database.Reconnect(); + Console.WriteLine(e.ToString()); + } + } + } } diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs index 5037f98..e55606e 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLManager.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs @@ -41,7 +41,7 @@ namespace OpenSim.Framework.Data.MySQL /// /// The database connection object /// - IDbConnection dbcon; + MySqlConnection dbcon; /// /// Connection string for ADO.net /// @@ -115,10 +115,11 @@ namespace OpenSim.Framework.Data.MySQL { MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); dbcommand.CommandText = sql; - foreach (KeyValuePair param in parameters) - { - dbcommand.Parameters.Add(param.Key, param.Value); - } + if(parameters != null) + foreach (KeyValuePair param in parameters) + { + dbcommand.Parameters.Add(param.Key, param.Value); + } return (IDbCommand)dbcommand; } @@ -149,10 +150,11 @@ namespace OpenSim.Framework.Data.MySQL { MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); dbcommand.CommandText = sql; - foreach (KeyValuePair param in parameters) - { - dbcommand.Parameters.Add(param.Key, param.Value); - } + if(parameters != null) + foreach (KeyValuePair param in parameters) + { + dbcommand.Parameters.Add(param.Key, param.Value); + } return (IDbCommand)dbcommand; } @@ -370,6 +372,8 @@ namespace OpenSim.Framework.Data.MySQL folder.parentID = new LLUUID((string)reader["parentFolderID"]); folder.folderID = new LLUUID((string)reader["folderID"]); folder.name = (string)reader["folderName"]; + folder.category = (InventoryCategory)((Int16)reader["category"]); + folder.type = (Int16)reader["folderType"]; rows.Add(folder); } @@ -509,24 +513,32 @@ namespace OpenSim.Framework.Data.MySQL /// Success? public bool insertFolder(InventoryFolderBase folder) { - string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES "; - sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)"; - - Dictionary parameters = new Dictionary(); - parameters["?folderID"] = folder.folderID.ToStringHyphenated(); - parameters["?agentID"] = folder.agentID.ToStringHyphenated(); - parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated(); - parameters["?folderName"] = folder.name; - + string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName, category, folderType) VALUES "; + sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName, ?category, ?folderType)"; + + MySqlCommand dbcmd = dbcon.CreateCommand(); + dbcmd.CommandText = sql; + + LLUUID tmpID = folder.folderID; + dbcmd.Parameters.Add(new MySqlParameter("?folderID", tmpID.ToStringHyphenated())); + dbcmd.Parameters.Add(new MySqlParameter("?folderID", tmpID.ToStringHyphenated())); + tmpID = folder.agentID; + dbcmd.Parameters.Add(new MySqlParameter("?agentID", tmpID.ToStringHyphenated())); + tmpID = folder.parentID; + dbcmd.Parameters.Add(new MySqlParameter("?parentFolderID", tmpID.ToStringHyphenated())); + dbcmd.Parameters.Add(new MySqlParameter("?folderName", folder.name)); + MySqlParameter p = dbcmd.Parameters.Add(new MySqlParameter("?category", MySqlDbType.Byte)); + p.Value = (byte)folder.category; + + p = dbcmd.Parameters.Add(new MySqlParameter("?folderType", MySqlDbType.Byte)); + p.Value = (byte)folder.type; + + bool returnval = false; try { - IDbCommand result = Query(sql, parameters); - - if (result.ExecuteNonQuery() == 1) + if (dbcmd.ExecuteNonQuery() == 1) returnval = true; - - result.Dispose(); } catch (Exception e) { -- cgit v1.1