From 181a90967ee9084676f84e74b2393855218c5723 Mon Sep 17 00:00:00 2001 From: MW Date: Tue, 14 Aug 2007 17:29:15 +0000 Subject: Start of inventory items, when you upload a texture the data will now be stored in the inventory database and you will still have that texture in inventory on later logins (Again only in standalone mode with authentication.) Also there might be some problems if you upload textures in other regions to the start one (due to us not updating the CAPS url properly). --- .../Framework/Data.SQLite/SQLiteInventoryStore.cs | 75 ++++++++++++++++++++-- 1 file changed, 71 insertions(+), 4 deletions(-) (limited to 'OpenSim/Framework/Data.SQLite') diff --git a/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs b/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs index 811a355..045fbee 100644 --- a/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs +++ b/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs @@ -91,7 +91,7 @@ namespace OpenSim.Framework.Data.SQLite data.Add("inventoryCurrentPermissions", DbType.Int32); data.Add("inventoryBasePermissions", DbType.Int32); data.Add("inventoryEveryOnePermissions", DbType.Int32); - + return data; } @@ -219,6 +219,44 @@ namespace OpenSim.Framework.Data.SQLite row["version"] = folder.version; } + public InventoryItemBase BuildItem(DataRow row) + { + InventoryItemBase item = new InventoryItemBase(); + item.inventoryID = new LLUUID((string)row["UUID"]); + item.assetID = new LLUUID((string)row["assetID"]); + item.assetType = Convert.ToInt32(row["assetType"]); + item.invType = Convert.ToInt32(row["invType"]); + item.parentFolderID = new LLUUID((string)row["parentFolderID"]); + item.avatarID = new LLUUID((string)row["avatarID"]); + item.creatorsID = new LLUUID((string)row["creatorsID"]); + item.inventoryName =(string) row["inventoryName"]; + item.inventoryDescription = (string) row["inventoryDescription"]; + + item.inventoryNextPermissions = Convert.ToUInt32(row["inventoryNextPermissions"]); + item.inventoryCurrentPermissions = Convert.ToUInt32(row["inventoryCurrentPermissions"]); + item.inventoryBasePermissions = Convert.ToUInt32(row["inventoryBasePermissions"]); + item.inventoryEveryOnePermissions = Convert.ToUInt32(row["inventoryEveryOnePermissions"]); + return item; + } + + private void fillItemRow(DataRow row, InventoryItemBase item) + { + row["UUID"] = item.inventoryID; + row["assetID"] = item.assetID; + row["assetType"] = item.assetType; + row["invType"] = item.invType; + row["parentFolderID"] = item.parentFolderID; + row["avatarID"] = item.avatarID; + row["creatorsID"] = item.creatorsID; + row["inventoryName"] = item.inventoryName; + row["inventoryDescription"] = item.inventoryDescription; + + row["inventoryNextPermissions"] = item.inventoryNextPermissions; + row["inventoryCurrentPermissions"] = item.inventoryCurrentPermissions; + row["inventoryBasePermissions"] = item.inventoryBasePermissions; + row["inventoryEveryOnePermissions"] = item.inventoryEveryOnePermissions; + } + private void addFolder(InventoryFolderBase folder) { DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; @@ -238,6 +276,24 @@ namespace OpenSim.Framework.Data.SQLite this.invFoldersDa.Update(ds, "inventoryfolders"); } + private void addItem(InventoryItemBase item) + { + DataTable inventoryItemTable = ds.Tables["inventoryitems"]; + + DataRow inventoryRow = inventoryItemTable.Rows.Find(item.inventoryID); + if (inventoryRow == null) + { + inventoryRow = inventoryItemTable.NewRow(); + fillItemRow(inventoryRow, item); + inventoryItemTable.Rows.Add(inventoryRow); + } + else + { + fillItemRow(inventoryRow, item); + } + this.invItemsDa.Update(ds, "inventoryitems"); + } + public void Shutdown() { // TODO: DataSet commit @@ -275,7 +331,16 @@ namespace OpenSim.Framework.Data.SQLite /// A List of InventoryItemBase items public List getInventoryInFolder(LLUUID folderID) { - return null; + List retval = new List(); + DataTable inventoryItemTable = ds.Tables["inventoryitems"]; + string selectExp = "parentFolderID = '" + folderID.ToString() + "'"; + DataRow[] rows = inventoryItemTable.Select(selectExp); + foreach (DataRow row in rows) + { + retval.Add(BuildItem(row)); + } + + return retval; } /// @@ -297,7 +362,7 @@ namespace OpenSim.Framework.Data.SQLite { List folders = new List(); DataTable inventoryFolderTable = ds.Tables["inventoryfolders"]; - string selectExp = "agentID = '"+ user.ToString()+"' AND parentID = '"+ LLUUID.Zero.ToString()+"'"; + string selectExp = "agentID = '" + user.ToString() + "' AND parentID = '" + LLUUID.Zero.ToString() + "'"; DataRow[] rows = inventoryFolderTable.Select(selectExp); foreach (DataRow row in rows) { @@ -339,7 +404,7 @@ namespace OpenSim.Framework.Data.SQLite { folders.Add(this.buildFolder(row)); } - // System.Console.WriteLine("found " + folders.Count + " inventory folders"); + // System.Console.WriteLine("found " + folders.Count + " inventory folders"); return folders; } @@ -369,6 +434,7 @@ namespace OpenSim.Framework.Data.SQLite /// The item to be created public void addInventoryItem(InventoryItemBase item) { + this.addItem(item); } /// @@ -377,6 +443,7 @@ namespace OpenSim.Framework.Data.SQLite /// The updated item public void updateInventoryItem(InventoryItemBase item) { + this.addItem(item); } /// -- cgit v1.1