aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Data
diff options
context:
space:
mode:
authorlbsa712007-09-27 14:57:43 +0000
committerlbsa712007-09-27 14:57:43 +0000
commit863195612bdef56165f2b4354bab280c371618b9 (patch)
tree63cec15a6c0338a8777640ed13fd7c3ce05eeba7 /OpenSim/Framework/Data
parentrevert change to libsecondlife.dll.config which breaks Linux (diff)
downloadopensim-SC_OLD-863195612bdef56165f2b4354bab280c371618b9.zip
opensim-SC_OLD-863195612bdef56165f2b4354bab280c371618b9.tar.gz
opensim-SC_OLD-863195612bdef56165f2b4354bab280c371618b9.tar.bz2
opensim-SC_OLD-863195612bdef56165f2b4354bab280c371618b9.tar.xz
Reverting back to 2017 since 2018 were causing Linux breakage; reopening Tleiades patch 444 and 445.
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs58
-rw-r--r--OpenSim/Framework/Data.MySQL/MySQLManager.cs58
-rw-r--r--OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs71
-rw-r--r--OpenSim/Framework/Data/InventoryData.cs33
4 files changed, 101 insertions, 119 deletions
diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
index 8a7e869..5009d9e 100644
--- a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
+++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs
@@ -132,7 +132,7 @@ namespace OpenSim.Framework.Data.MySQL
132 param["?uuid"] = user.ToStringHyphenated(); 132 param["?uuid"] = user.ToStringHyphenated();
133 param["?zero"] = LLUUID.Zero.ToStringHyphenated(); 133 param["?zero"] = LLUUID.Zero.ToStringHyphenated();
134 134
135 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND (agentID = ?uuid OR category = 0)", param); 135 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
136 IDataReader reader = result.ExecuteReader(); 136 IDataReader reader = result.ExecuteReader();
137 137
138 List<InventoryFolderBase> items = database.readInventoryFolders(reader); 138 List<InventoryFolderBase> items = database.readInventoryFolders(reader);
@@ -152,6 +152,40 @@ namespace OpenSim.Framework.Data.MySQL
152 } 152 }
153 153
154 /// <summary> 154 /// <summary>
155 /// Returns the users inventory root folder.
156 /// </summary>
157 /// <param name="user"></param>
158 /// <returns></returns>
159 public InventoryFolderBase getUserRootFolder(LLUUID user)
160 {
161 try
162 {
163 lock (database)
164 {
165 Dictionary<string, string> param = new Dictionary<string, string>();
166 param["?uuid"] = user.ToStringHyphenated();
167 param["?zero"] = LLUUID.Zero.ToStringHyphenated();
168
169 IDbCommand result = database.Query("SELECT * FROM inventoryfolders WHERE parentFolderID = ?zero AND agentID = ?uuid", param);
170 IDataReader reader = result.ExecuteReader();
171
172 List<InventoryFolderBase> items = database.readInventoryFolders(reader);
173 InventoryFolderBase rootFolder = items[0]; //should only be one folder with parent set to zero (the root one).
174 reader.Close();
175 result.Dispose();
176
177 return rootFolder;
178 }
179 }
180 catch (Exception e)
181 {
182 database.Reconnect();
183 Console.WriteLine(e.ToString());
184 return null;
185 }
186 }
187
188 /// <summary>
155 /// Returns a list of folders in a users inventory contained within the specified folder 189 /// Returns a list of folders in a users inventory contained within the specified folder
156 /// </summary> 190 /// </summary>
157 /// <param name="parentID">The folder to search</param> 191 /// <param name="parentID">The folder to search</param>
@@ -314,27 +348,5 @@ namespace OpenSim.Framework.Data.MySQL
314 { 348 {
315 addInventoryFolder(folder); 349 addInventoryFolder(folder);
316 } 350 }
317
318 public void deleteInventoryCategory(InventoryCategory inventoryCategory)
319 {
320 try
321 {
322 lock (database) {
323 IDbCommand cmd = database.Query(string.Format("DELETE FROM inventoryitems WHERE parentFolderID IN (SELECT folderId FROM inventoryfolders WHERE category={0})", (byte)inventoryCategory), null);
324 cmd.ExecuteNonQuery();
325
326
327 cmd = database.Query(string.Format("DELETE FROM inventoryfolders WHERE category={0}", (byte)inventoryCategory), null);
328 cmd.ExecuteNonQuery();
329 }
330
331 }
332 catch (Exception e)
333 {
334 database.Reconnect();
335 Console.WriteLine(e.ToString());
336 }
337 }
338
339 } 351 }
340} 352}
diff --git a/OpenSim/Framework/Data.MySQL/MySQLManager.cs b/OpenSim/Framework/Data.MySQL/MySQLManager.cs
index e55606e..5037f98 100644
--- a/OpenSim/Framework/Data.MySQL/MySQLManager.cs
+++ b/OpenSim/Framework/Data.MySQL/MySQLManager.cs
@@ -41,7 +41,7 @@ namespace OpenSim.Framework.Data.MySQL
41 /// <summary> 41 /// <summary>
42 /// The database connection object 42 /// The database connection object
43 /// </summary> 43 /// </summary>
44 MySqlConnection dbcon; 44 IDbConnection dbcon;
45 /// <summary> 45 /// <summary>
46 /// Connection string for ADO.net 46 /// Connection string for ADO.net
47 /// </summary> 47 /// </summary>
@@ -115,11 +115,10 @@ namespace OpenSim.Framework.Data.MySQL
115 { 115 {
116 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); 116 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
117 dbcommand.CommandText = sql; 117 dbcommand.CommandText = sql;
118 if(parameters != null) 118 foreach (KeyValuePair<string, string> param in parameters)
119 foreach (KeyValuePair<string, string> param in parameters) 119 {
120 { 120 dbcommand.Parameters.Add(param.Key, param.Value);
121 dbcommand.Parameters.Add(param.Key, param.Value); 121 }
122 }
123 122
124 return (IDbCommand)dbcommand; 123 return (IDbCommand)dbcommand;
125 } 124 }
@@ -150,11 +149,10 @@ namespace OpenSim.Framework.Data.MySQL
150 { 149 {
151 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand(); 150 MySqlCommand dbcommand = (MySqlCommand)dbcon.CreateCommand();
152 dbcommand.CommandText = sql; 151 dbcommand.CommandText = sql;
153 if(parameters != null) 152 foreach (KeyValuePair<string, string> param in parameters)
154 foreach (KeyValuePair<string, string> param in parameters) 153 {
155 { 154 dbcommand.Parameters.Add(param.Key, param.Value);
156 dbcommand.Parameters.Add(param.Key, param.Value); 155 }
157 }
158 156
159 return (IDbCommand)dbcommand; 157 return (IDbCommand)dbcommand;
160 } 158 }
@@ -372,8 +370,6 @@ namespace OpenSim.Framework.Data.MySQL
372 folder.parentID = new LLUUID((string)reader["parentFolderID"]); 370 folder.parentID = new LLUUID((string)reader["parentFolderID"]);
373 folder.folderID = new LLUUID((string)reader["folderID"]); 371 folder.folderID = new LLUUID((string)reader["folderID"]);
374 folder.name = (string)reader["folderName"]; 372 folder.name = (string)reader["folderName"];
375 folder.category = (InventoryCategory)((Int16)reader["category"]);
376 folder.type = (Int16)reader["folderType"];
377 373
378 rows.Add(folder); 374 rows.Add(folder);
379 } 375 }
@@ -513,32 +509,24 @@ namespace OpenSim.Framework.Data.MySQL
513 /// <returns>Success?</returns> 509 /// <returns>Success?</returns>
514 public bool insertFolder(InventoryFolderBase folder) 510 public bool insertFolder(InventoryFolderBase folder)
515 { 511 {
516 string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName, category, folderType) VALUES "; 512 string sql = "REPLACE INTO inventoryfolders (folderID, agentID, parentFolderID, folderName) VALUES ";
517 sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName, ?category, ?folderType)"; 513 sql += "(?folderID, ?agentID, ?parentFolderID, ?folderName)";
518 514
519 MySqlCommand dbcmd = dbcon.CreateCommand(); 515 Dictionary<string, string> parameters = new Dictionary<string, string>();
520 dbcmd.CommandText = sql; 516 parameters["?folderID"] = folder.folderID.ToStringHyphenated();
521 517 parameters["?agentID"] = folder.agentID.ToStringHyphenated();
522 LLUUID tmpID = folder.folderID; 518 parameters["?parentFolderID"] = folder.parentID.ToStringHyphenated();
523 dbcmd.Parameters.Add(new MySqlParameter("?folderID", tmpID.ToStringHyphenated())); 519 parameters["?folderName"] = folder.name;
524 dbcmd.Parameters.Add(new MySqlParameter("?folderID", tmpID.ToStringHyphenated())); 520
525 tmpID = folder.agentID;
526 dbcmd.Parameters.Add(new MySqlParameter("?agentID", tmpID.ToStringHyphenated()));
527 tmpID = folder.parentID;
528 dbcmd.Parameters.Add(new MySqlParameter("?parentFolderID", tmpID.ToStringHyphenated()));
529 dbcmd.Parameters.Add(new MySqlParameter("?folderName", folder.name));
530 MySqlParameter p = dbcmd.Parameters.Add(new MySqlParameter("?category", MySqlDbType.Byte));
531 p.Value = (byte)folder.category;
532
533 p = dbcmd.Parameters.Add(new MySqlParameter("?folderType", MySqlDbType.Byte));
534 p.Value = (byte)folder.type;
535
536
537 bool returnval = false; 521 bool returnval = false;
538 try 522 try
539 { 523 {
540 if (dbcmd.ExecuteNonQuery() == 1) 524 IDbCommand result = Query(sql, parameters);
525
526 if (result.ExecuteNonQuery() == 1)
541 returnval = true; 527 returnval = true;
528
529 result.Dispose();
542 } 530 }
543 catch (Exception e) 531 catch (Exception e)
544 { 532 {
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs b/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs
index eb0ba04..d3d752f 100644
--- a/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs
+++ b/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs
@@ -61,11 +61,10 @@ namespace OpenSim.Framework.Data.SQLite
61 MainLog.Instance.Verbose("DATASTORE", "Populated Intentory Items Definitions"); 61 MainLog.Instance.Verbose("DATASTORE", "Populated Intentory Items Definitions");
62 62
63 ds.AcceptChanges(); 63 ds.AcceptChanges();
64
65 return; 64 return;
66 } 65 }
67 66
68 public InventoryItemBase buildItem(DataRow row) 67 public InventoryItemBase BuildItem(DataRow row)
69 { 68 {
70 InventoryItemBase item = new InventoryItemBase(); 69 InventoryItemBase item = new InventoryItemBase();
71 item.inventoryID = new LLUUID((string)row["UUID"]); 70 item.inventoryID = new LLUUID((string)row["UUID"]);
@@ -183,7 +182,7 @@ namespace OpenSim.Framework.Data.SQLite
183 DataRow[] rows = inventoryItemTable.Select(selectExp); 182 DataRow[] rows = inventoryItemTable.Select(selectExp);
184 foreach (DataRow row in rows) 183 foreach (DataRow row in rows)
185 { 184 {
186 retval.Add(buildItem(row)); 185 retval.Add(BuildItem(row));
187 } 186 }
188 187
189 return retval; 188 return retval;
@@ -196,16 +195,43 @@ namespace OpenSim.Framework.Data.SQLite
196 /// <returns>A list of folder objects</returns> 195 /// <returns>A list of folder objects</returns>
197 public List<InventoryFolderBase> getUserRootFolders(LLUUID user) 196 public List<InventoryFolderBase> getUserRootFolders(LLUUID user)
198 { 197 {
198 return null;
199 }
200
201 /// <summary>
202 /// Returns the users inventory root folder.
203 /// </summary>
204 /// <param name="user">The UUID of the user who is having inventory being returned</param>
205 /// <returns>Root inventory folder</returns>
206 public InventoryFolderBase getUserRootFolder(LLUUID user)
207 {
199 List<InventoryFolderBase> folders = new List<InventoryFolderBase>(); 208 List<InventoryFolderBase> folders = new List<InventoryFolderBase>();
200 DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; 209 DataTable inventoryFolderTable = ds.Tables["inventoryfolders"];
201 210 string selectExp = "agentID = '" + user.ToString() + "' AND parentID = '" + LLUUID.Zero.ToString() + "'";
202 string selectExp = "parentID = '" + LLUUID.Zero.ToString() + "' AND (agentID = '" + user.ToString() + "' OR category = 0)";
203 DataRow[] rows = inventoryFolderTable.Select(selectExp); 211 DataRow[] rows = inventoryFolderTable.Select(selectExp);
204 foreach (DataRow row in rows) 212 foreach (DataRow row in rows)
205 { 213 {
206 folders.Add(this.buildFolder(row)); 214 folders.Add(this.buildFolder(row));
207 } 215 }
208 return folders; 216
217 if (folders.Count == 1)
218 {
219 //we found the root
220 //System.Console.WriteLine("found root inventory folder");
221 return folders[0];
222 }
223 else if (folders.Count > 1)
224 {
225 //err shouldn't be more than one root
226 //System.Console.WriteLine("found more than one root inventory folder");
227 }
228 else if (folders.Count == 0)
229 {
230 // no root?
231 //System.Console.WriteLine("couldn't find root inventory folder");
232 }
233
234 return null;
209 } 235 }
210 236
211 /// <summary> 237 /// <summary>
@@ -234,11 +260,7 @@ namespace OpenSim.Framework.Data.SQLite
234 /// <returns>A class containing item information</returns> 260 /// <returns>A class containing item information</returns>
235 public InventoryItemBase getInventoryItem(LLUUID item) 261 public InventoryItemBase getInventoryItem(LLUUID item)
236 { 262 {
237 DataRow row = ds.Tables["inventoryitems"].Rows.Find(item); 263 return null;
238 if (row != null)
239 return this.buildItem(row);
240 else
241 return null;
242 } 264 }
243 265
244 /// <summary> 266 /// <summary>
@@ -248,14 +270,7 @@ namespace OpenSim.Framework.Data.SQLite
248 /// <returns>A class containing folder information</returns> 270 /// <returns>A class containing folder information</returns>
249 public InventoryFolderBase getInventoryFolder(LLUUID folder) 271 public InventoryFolderBase getInventoryFolder(LLUUID folder)
250 { 272 {
251 DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; 273 return null;
252 string selectExp = "UUID = '" + folder.ToString() + "'";
253 DataRow[] rows = inventoryFolderTable.Select(selectExp);
254
255 if (rows.Length == 1)
256 return this.buildFolder(rows[0]);
257 else
258 return null;
259 } 274 }
260 275
261 /// <summary> 276 /// <summary>
@@ -293,11 +308,6 @@ namespace OpenSim.Framework.Data.SQLite
293 this.invItemsDa.Update(ds, "inventoryitems"); 308 this.invItemsDa.Update(ds, "inventoryitems");
294 } 309 }
295 310
296 //TODO! Implement SQLite deleteInventoryCategory
297 public void deleteInventoryCategory(InventoryCategory inventoryCategory)
298 {
299 }
300
301 /// <summary> 311 /// <summary>
302 /// Adds a new folder specified by folder 312 /// Adds a new folder specified by folder
303 /// </summary> 313 /// </summary>
@@ -316,11 +326,6 @@ namespace OpenSim.Framework.Data.SQLite
316 this.addFolder(folder); 326 this.addFolder(folder);
317 } 327 }
318 328
319 //TODO! implement CreateNewUserInventory
320 public void CreateNewUserInventory(LLUUID user)
321 {
322 throw new Exception("Function not implemented");
323 }
324 329
325 /*********************************************************************** 330 /***********************************************************************
326 * 331 *
@@ -345,7 +350,6 @@ namespace OpenSim.Framework.Data.SQLite
345 createCol(inv, "parentFolderID", typeof(System.String)); 350 createCol(inv, "parentFolderID", typeof(System.String));
346 createCol(inv, "avatarID", typeof(System.String)); 351 createCol(inv, "avatarID", typeof(System.String));
347 createCol(inv, "creatorsID", typeof(System.String)); 352 createCol(inv, "creatorsID", typeof(System.String));
348 createCol(inv, "category", typeof(System.Byte));
349 353
350 createCol(inv, "inventoryName", typeof(System.String)); 354 createCol(inv, "inventoryName", typeof(System.String));
351 createCol(inv, "inventoryDescription", typeof(System.String)); 355 createCol(inv, "inventoryDescription", typeof(System.String));
@@ -369,7 +373,6 @@ namespace OpenSim.Framework.Data.SQLite
369 createCol(fol, "parentID", typeof(System.String)); 373 createCol(fol, "parentID", typeof(System.String));
370 createCol(fol, "type", typeof(System.Int32)); 374 createCol(fol, "type", typeof(System.Int32));
371 createCol(fol, "version", typeof(System.Int32)); 375 createCol(fol, "version", typeof(System.Int32));
372 createCol(fol, "category", typeof(System.Byte));
373 376
374 fol.PrimaryKey = new DataColumn[] { fol.Columns["UUID"] }; 377 fol.PrimaryKey = new DataColumn[] { fol.Columns["UUID"] };
375 return fol; 378 return fol;
@@ -412,7 +415,6 @@ namespace OpenSim.Framework.Data.SQLite
412 folder.parentID = new LLUUID((string)row["parentID"]); 415 folder.parentID = new LLUUID((string)row["parentID"]);
413 folder.type = Convert.ToInt16(row["type"]); 416 folder.type = Convert.ToInt16(row["type"]);
414 folder.version = Convert.ToUInt16(row["version"]); 417 folder.version = Convert.ToUInt16(row["version"]);
415 folder.category = (InventoryCategory)Convert.ToByte(row["category"]);
416 return folder; 418 return folder;
417 } 419 }
418 420
@@ -424,7 +426,6 @@ namespace OpenSim.Framework.Data.SQLite
424 row["parentID"] = folder.parentID; 426 row["parentID"] = folder.parentID;
425 row["type"] = folder.type; 427 row["type"] = folder.type;
426 row["version"] = folder.version; 428 row["version"] = folder.version;
427 row["category"] = folder.category;
428 } 429 }
429 430
430 431
@@ -643,7 +644,3 @@ namespace OpenSim.Framework.Data.SQLite
643 } 644 }
644} 645}
645 646
646
647
648
649
diff --git a/OpenSim/Framework/Data/InventoryData.cs b/OpenSim/Framework/Data/InventoryData.cs
index dc857d8..2df26e1 100644
--- a/OpenSim/Framework/Data/InventoryData.cs
+++ b/OpenSim/Framework/Data/InventoryData.cs
@@ -25,19 +25,15 @@
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;
29using System.Xml.Serialization;
30using System.Collections.Generic; 28using System.Collections.Generic;
31using libsecondlife; 29using libsecondlife;
32 30
33namespace OpenSim.Framework.Data 31namespace OpenSim.Framework.Data
34{ 32{
35
36 public enum InventoryCategory : byte { Library, Default, User };
37 /// <summary> 33 /// <summary>
38 /// Inventory Item - contains all the properties associated with an individual inventory piece. 34 /// Inventory Item - contains all the properties associated with an individual inventory piece.
39 /// </summary> 35 /// </summary>
40 public class InventoryItemBase : MarshalByRefObject 36 public class InventoryItemBase
41 { 37 {
42 /// <summary> 38 /// <summary>
43 /// A UUID containing the ID for the inventory item itself 39 /// A UUID containing the ID for the inventory item itself
@@ -70,12 +66,10 @@ namespace OpenSim.Framework.Data
70 /// <summary> 66 /// <summary>
71 /// The name of the inventory item (must be less than 64 characters) 67 /// The name of the inventory item (must be less than 64 characters)
72 /// </summary> 68 /// </summary>
73 [XmlElement(ElementName="name")]
74 public string inventoryName; 69 public string inventoryName;
75 /// <summary> 70 /// <summary>
76 /// The description of the inventory item (must be less than 64 characters) 71 /// The description of the inventory item (must be less than 64 characters)
77 /// </summary> 72 /// </summary>
78 [XmlElement(ElementName = "description")]
79 public string inventoryDescription; 73 public string inventoryDescription;
80 /// <summary> 74 /// <summary>
81 /// A mask containing the permissions for the next owner (cannot be enforced) 75 /// A mask containing the permissions for the next owner (cannot be enforced)
@@ -98,7 +92,7 @@ namespace OpenSim.Framework.Data
98 /// <summary> 92 /// <summary>
99 /// A Class for folders which contain users inventory 93 /// A Class for folders which contain users inventory
100 /// </summary> 94 /// </summary>
101 public class InventoryFolderBase : MarshalByRefObject 95 public class InventoryFolderBase
102 { 96 {
103 /// <summary> 97 /// <summary>
104 /// The name of the folder (64 characters or less) 98 /// The name of the folder (64 characters or less)
@@ -124,10 +118,6 @@ namespace OpenSim.Framework.Data
124 /// 118 ///
125 /// </summary> 119 /// </summary>
126 public ushort version; 120 public ushort version;
127 /// <summary>
128 /// Inventory category, Library, Default, System
129 /// </summary>
130 public InventoryCategory category;
131 } 121 }
132 122
133 /// <summary> 123 /// <summary>
@@ -172,6 +162,13 @@ namespace OpenSim.Framework.Data
172 List<InventoryFolderBase> getUserRootFolders(LLUUID user); 162 List<InventoryFolderBase> getUserRootFolders(LLUUID user);
173 163
174 /// <summary> 164 /// <summary>
165 /// Returns the users inventory root folder.
166 /// </summary>
167 /// <param name="user">The UUID of the user who is having inventory being returned</param>
168 /// <returns>Root inventory folder</returns>
169 InventoryFolderBase getUserRootFolder(LLUUID user);
170
171 /// <summary>
175 /// Returns a list of inventory folders contained in the folder 'parentID' 172 /// Returns a list of inventory folders contained in the folder 'parentID'
176 /// </summary> 173 /// </summary>
177 /// <param name="parentID">The folder to get subfolders for</param> 174 /// <param name="parentID">The folder to get subfolders for</param>
@@ -221,17 +218,5 @@ namespace OpenSim.Framework.Data
221 /// </summary> 218 /// </summary>
222 /// <param name="folder">The inventory folder</param> 219 /// <param name="folder">The inventory folder</param>
223 void updateInventoryFolder(InventoryFolderBase folder); 220 void updateInventoryFolder(InventoryFolderBase folder);
224
225 /// <summary>
226 /// Delete a complete inventory category
227 /// </summary>
228 /// <param name="inventoryCategory">What folder category shout be deleted</param>
229 void deleteInventoryCategory(InventoryCategory inventoryCategory);
230
231 /// <summary>
232 /// Setup the initial folderset of a user
233 /// </summary>
234 /// <param name="user"></param>
235 //void CreateNewUserInventory(LLUUID user);
236 } 221 }
237} 222}