From 57519b6dba97d7e7a2de71af9d58c93b4750bde8 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Wed, 16 Jan 2008 18:35:34 +0000 Subject: * Store task inventory when an object is taken into agent inventory * This means that you can take an object from a region and rez it somewhere else, with its inventory intact. * As for earlier, at this stage only scripts can be placed in inventory * This isn't an efficient implementation, a better one will probably need to come along soonish --- OpenSim/Framework/Data.MySQL/MySQLDataStore.cs | 97 ++++++++++++++------------ 1 file changed, 54 insertions(+), 43 deletions(-) (limited to 'OpenSim/Framework/Data.MySQL/MySQLDataStore.cs') diff --git a/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs b/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs index 26985b3..183a2f9 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLDataStore.cs @@ -163,6 +163,8 @@ namespace OpenSim.Framework.Data.MySQL public void RemoveObject(LLUUID obj, LLUUID regionUUID) { + MainLog.Instance.Verbose("DATASTORE", "Removing obj: {0} from region: {1}", obj.UUID, regionUUID); + DataTable prims = m_primTable; DataTable shapes = m_shapeTable; DataTable items = m_itemsTable; @@ -187,9 +189,9 @@ namespace OpenSim.Framework.Data.MySQL String sql = String.Format("primID = '{0}'", uuid); DataRow[] itemRows = items.Select(sql); - foreach (DataRow itemsRow in itemRows) + foreach (DataRow itemRow in itemRows) { - shapeRow.Delete(); + itemRow.Delete(); } } @@ -307,7 +309,7 @@ namespace OpenSim.Framework.Data.MySQL TaskInventoryItem item = buildItem(row); inventory.Add(item); - MainLog.Instance.Verbose("DATASTORE", "Restored item {0}, {1}", item.name, item.item_id); + MainLog.Instance.Verbose("DATASTORE", "Restored item {0}, {1}", item.Name, item.ItemID); } prim.AddInventoryItems(inventory); @@ -316,7 +318,7 @@ namespace OpenSim.Framework.Data.MySQL // every item). This data should really be stored in the prim table itself. if (dbItemRows.Length > 0) { - prim.FolderID = inventory[0].parent_id; + prim.FolderID = inventory[0].ParentID; } } @@ -853,27 +855,27 @@ namespace OpenSim.Framework.Data.MySQL { TaskInventoryItem taskItem = new TaskInventoryItem(); - taskItem.item_id = new LLUUID((String)row["itemID"]); - taskItem.ParentPartID = new LLUUID((String)row["primID"]); - taskItem.asset_id = new LLUUID((String)row["assetID"]); - taskItem.parent_id = new LLUUID((String)row["parentFolderID"]); + taskItem.ItemID = new LLUUID((String)row["itemID"]); + taskItem.ParentPartID = new LLUUID((String)row["primID"]); + taskItem.AssetID = new LLUUID((String)row["assetID"]); + taskItem.ParentID = new LLUUID((String)row["parentFolderID"]); - taskItem.inv_type = Convert.ToInt32(row["invType"]); - taskItem.type = Convert.ToInt32(row["assetType"]); + taskItem.InvType = Convert.ToInt32(row["invType"]); + taskItem.Type = Convert.ToInt32(row["assetType"]); - taskItem.name = (String)row["name"]; - taskItem.desc = (String)row["description"]; - taskItem.creation_date = Convert.ToUInt32(row["creationDate"]); - taskItem.creator_id = new LLUUID((String)row["creatorID"]); - taskItem.owner_id = new LLUUID((String)row["ownerID"]); - taskItem.last_owner_id = new LLUUID((String)row["lastOwnerID"]); - taskItem.group_id = new LLUUID((String)row["groupID"]); + taskItem.Name = (String)row["name"]; + taskItem.Description = (String)row["description"]; + taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); + taskItem.CreatorID = new LLUUID((String)row["creatorID"]); + taskItem.OwnerID = new LLUUID((String)row["ownerID"]); + taskItem.LastOwnerID = new LLUUID((String)row["lastOwnerID"]); + taskItem.GroupID = new LLUUID((String)row["groupID"]); - taskItem.next_owner_mask = Convert.ToUInt32(row["nextPermissions"]); - taskItem.owner_mask = Convert.ToUInt32(row["currentPermissions"]); - taskItem.base_mask = Convert.ToUInt32(row["basePermissions"]); - taskItem.everyone_mask = Convert.ToUInt32(row["everyonePermissions"]); - taskItem.group_mask = Convert.ToUInt32(row["groupPermissions"]); + taskItem.NextOwnerMask = Convert.ToUInt32(row["nextPermissions"]); + taskItem.OwnerMask = Convert.ToUInt32(row["currentPermissions"]); + taskItem.BaseMask = Convert.ToUInt32(row["basePermissions"]); + taskItem.EveryoneMask = Convert.ToUInt32(row["everyonePermissions"]); + taskItem.GroupMask = Convert.ToUInt32(row["groupPermissions"]); return taskItem; } @@ -1023,26 +1025,26 @@ namespace OpenSim.Framework.Data.MySQL private void fillItemRow(DataRow row, TaskInventoryItem taskItem) { - row["itemID"] = taskItem.item_id; + row["itemID"] = taskItem.ItemID; row["primID"] = taskItem.ParentPartID; - row["assetID"] = taskItem.asset_id; - row["parentFolderID"] = taskItem.parent_id; + row["assetID"] = taskItem.AssetID; + row["parentFolderID"] = taskItem.ParentID; - row["invType"] = taskItem.inv_type; - row["assetType"] = taskItem.type; + row["invType"] = taskItem.InvType; + row["assetType"] = taskItem.Type; - row["name"] = taskItem.name; - row["description"] = taskItem.desc; - row["creationDate"] = taskItem.creation_date; - row["creatorID"] = taskItem.creator_id; - row["ownerID"] = taskItem.owner_id; - row["lastOwnerID"] = taskItem.last_owner_id; - row["groupID"] = taskItem.group_id; - row["nextPermissions"] = taskItem.next_owner_mask; - row["currentPermissions"] = taskItem.owner_mask; - row["basePermissions"] = taskItem.base_mask; - row["everyonePermissions"] = taskItem.everyone_mask; - row["groupPermissions"] = taskItem.group_mask; + row["name"] = taskItem.Name; + row["description"] = taskItem.Description; + row["creationDate"] = taskItem.CreationDate; + row["creatorID"] = taskItem.CreatorID; + row["ownerID"] = taskItem.OwnerID; + row["lastOwnerID"] = taskItem.LastOwnerID; + row["groupID"] = taskItem.GroupID; + row["nextPermissions"] = taskItem.NextOwnerMask; + row["currentPermissions"] = taskItem.OwnerMask; + row["basePermissions"] = taskItem.BaseMask; + row["everyonePermissions"] = taskItem.EveryoneMask; + row["groupPermissions"] = taskItem.GroupMask; } private void fillLandRow(DataRow row, LandData land, LLUUID regionUUID) @@ -1216,11 +1218,15 @@ namespace OpenSim.Framework.Data.MySQL // Build structures for manipulation purposes IDictionary dbItemsToRemove = new Dictionary(); - ICollection itemsToAdd - = new List(); + ICollection itemsToAdd = new List(); foreach (DataRow row in dbItemRows) { + MainLog.Instance.Verbose( + "DATASTORE", + "Found item {0}, {1} in prim id {2}", + row["name"], row["itemID"], primID); + dbItemsToRemove.Add((String)row["itemID"], row); } @@ -1232,6 +1238,11 @@ namespace OpenSim.Framework.Data.MySQL if (dbItemsToRemove.ContainsKey(rawItemId)) { + MainLog.Instance.Verbose( + "DATASTORE", + "Discarding item {0}, {1} from remove candidates for prim id {2}", + items[itemId].Name, rawItemId, primID); + dbItemsToRemove.Remove(rawItemId); } else @@ -1256,8 +1267,8 @@ namespace OpenSim.Framework.Data.MySQL { MainLog.Instance.Verbose( "DATASTORE", - "Adding item {0}, {1} to prim ID {1}", - newItem.name, newItem.item_id, newItem.ParentPartID); + "Adding item {0}, {1} to prim ID {2}", + newItem.Name, newItem.ItemID, newItem.ParentPartID); DataRow newItemRow = dbItems.NewRow(); fillItemRow(newItemRow, newItem); -- cgit v1.1