diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Services/InventoryService/XInventoryService.cs | 62 |
1 files changed, 28 insertions, 34 deletions
diff --git a/OpenSim/Services/InventoryService/XInventoryService.cs b/OpenSim/Services/InventoryService/XInventoryService.cs index b75193f..b8ed46c 100644 --- a/OpenSim/Services/InventoryService/XInventoryService.cs +++ b/OpenSim/Services/InventoryService/XInventoryService.cs | |||
@@ -176,7 +176,7 @@ namespace OpenSim.Services.InventoryService | |||
176 | protected virtual XInventoryFolder[] GetSystemFolders(UUID principalID, UUID rootID) | 176 | protected virtual XInventoryFolder[] GetSystemFolders(UUID principalID, UUID rootID) |
177 | { | 177 | { |
178 | // m_log.DebugFormat("[XINVENTORY SERVICE]: Getting system folders for {0}", principalID); | 178 | // m_log.DebugFormat("[XINVENTORY SERVICE]: Getting system folders for {0}", principalID); |
179 | 179 | ||
180 | XInventoryFolder[] allFolders = m_Database.GetFolders( | 180 | XInventoryFolder[] allFolders = m_Database.GetFolders( |
181 | new string[] { "agentID", "parentFolderID" }, | 181 | new string[] { "agentID", "parentFolderID" }, |
182 | new string[] { principalID.ToString(), rootID.ToString() }); | 182 | new string[] { principalID.ToString(), rootID.ToString() }); |
@@ -192,7 +192,7 @@ namespace OpenSim.Services.InventoryService | |||
192 | 192 | ||
193 | // m_log.DebugFormat( | 193 | // m_log.DebugFormat( |
194 | // "[XINVENTORY SERVICE]: Found {0} system folders for {1}", sysFolders.Length, principalID); | 194 | // "[XINVENTORY SERVICE]: Found {0} system folders for {1}", sysFolders.Length, principalID); |
195 | 195 | ||
196 | return sysFolders; | 196 | return sysFolders; |
197 | } | 197 | } |
198 | 198 | ||
@@ -234,7 +234,7 @@ namespace OpenSim.Services.InventoryService | |||
234 | break; | 234 | break; |
235 | } | 235 | } |
236 | } | 236 | } |
237 | 237 | ||
238 | if (root == null) // oops | 238 | if (root == null) // oops |
239 | root = folders[0]; | 239 | root = folders[0]; |
240 | 240 | ||
@@ -255,7 +255,7 @@ namespace OpenSim.Services.InventoryService | |||
255 | 255 | ||
256 | return null; | 256 | return null; |
257 | } | 257 | } |
258 | 258 | ||
259 | return GetSystemFolderForType(rootFolder, type); | 259 | return GetSystemFolderForType(rootFolder, type); |
260 | } | 260 | } |
261 | 261 | ||
@@ -315,8 +315,7 @@ namespace OpenSim.Services.InventoryService | |||
315 | inventory.Items.Add(ConvertToOpenSim(i)); | 315 | inventory.Items.Add(ConvertToOpenSim(i)); |
316 | } | 316 | } |
317 | 317 | ||
318 | InventoryFolderBase f = new InventoryFolderBase(folderID, principalID); | 318 | InventoryFolderBase f = GetFolder(principalID, folderID); |
319 | f = GetFolder(f); | ||
320 | if (f != null) | 319 | if (f != null) |
321 | { | 320 | { |
322 | inventory.Version = f.Version; | 321 | inventory.Version = f.Version; |
@@ -336,11 +335,11 @@ namespace OpenSim.Services.InventoryService | |||
336 | 335 | ||
337 | return multiple; | 336 | return multiple; |
338 | } | 337 | } |
339 | 338 | ||
340 | public virtual List<InventoryItemBase> GetFolderItems(UUID principalID, UUID folderID) | 339 | public virtual List<InventoryItemBase> GetFolderItems(UUID principalID, UUID folderID) |
341 | { | 340 | { |
342 | // m_log.DebugFormat("[XINVENTORY]: Fetch items for folder {0}", folderID); | 341 | // m_log.DebugFormat("[XINVENTORY]: Fetch items for folder {0}", folderID); |
343 | 342 | ||
344 | // Since we probably don't get a valid principal here, either ... | 343 | // Since we probably don't get a valid principal here, either ... |
345 | // | 344 | // |
346 | List<InventoryItemBase> invItems = new List<InventoryItemBase>(); | 345 | List<InventoryItemBase> invItems = new List<InventoryItemBase>(); |
@@ -359,7 +358,7 @@ namespace OpenSim.Services.InventoryService | |||
359 | { | 358 | { |
360 | // m_log.DebugFormat("[XINVENTORY]: Add folder {0} type {1} in parent {2}", folder.Name, folder.Type, folder.ParentID); | 359 | // m_log.DebugFormat("[XINVENTORY]: Add folder {0} type {1} in parent {2}", folder.Name, folder.Type, folder.ParentID); |
361 | 360 | ||
362 | InventoryFolderBase check = GetFolder(folder); | 361 | InventoryFolderBase check = GetFolder(folder.Owner, folder.ID); |
363 | if (check != null) | 362 | if (check != null) |
364 | return false; | 363 | return false; |
365 | 364 | ||
@@ -387,7 +386,7 @@ namespace OpenSim.Services.InventoryService | |||
387 | m_log.WarnFormat( | 386 | m_log.WarnFormat( |
388 | "[XINVENTORY]: System folder of type {0} already exists when tried to add {1} to {2} for {3}", | 387 | "[XINVENTORY]: System folder of type {0} already exists when tried to add {1} to {2} for {3}", |
389 | folder.Type, folder.Name, folder.ParentID, folder.Owner); | 388 | folder.Type, folder.Name, folder.ParentID, folder.Owner); |
390 | 389 | ||
391 | return false; | 390 | return false; |
392 | } | 391 | } |
393 | } | 392 | } |
@@ -402,7 +401,7 @@ namespace OpenSim.Services.InventoryService | |||
402 | // m_log.DebugFormat("[XINVENTORY]: Update folder {0} {1} ({2})", folder.Name, folder.Type, folder.ID); | 401 | // m_log.DebugFormat("[XINVENTORY]: Update folder {0} {1} ({2})", folder.Name, folder.Type, folder.ID); |
403 | 402 | ||
404 | XInventoryFolder xFolder = ConvertFromOpenSim(folder); | 403 | XInventoryFolder xFolder = ConvertFromOpenSim(folder); |
405 | InventoryFolderBase check = GetFolder(folder); | 404 | InventoryFolderBase check = GetFolder(folder.Owner, folder.ID); |
406 | 405 | ||
407 | if (check == null) | 406 | if (check == null) |
408 | return AddFolder(folder); | 407 | return AddFolder(folder); |
@@ -499,7 +498,7 @@ namespace OpenSim.Services.InventoryService | |||
499 | { | 498 | { |
500 | // m_log.DebugFormat( | 499 | // m_log.DebugFormat( |
501 | // "[XINVENTORY SERVICE]: Adding item {0} {1} to folder {2} for {3}", item.Name, item.ID, item.Folder, item.Owner); | 500 | // "[XINVENTORY SERVICE]: Adding item {0} {1} to folder {2} for {3}", item.Name, item.ID, item.Folder, item.Owner); |
502 | 501 | ||
503 | return m_Database.StoreItem(ConvertFromOpenSim(item)); | 502 | return m_Database.StoreItem(ConvertFromOpenSim(item)); |
504 | } | 503 | } |
505 | 504 | ||
@@ -512,32 +511,32 @@ namespace OpenSim.Services.InventoryService | |||
512 | // m_log.InfoFormat( | 511 | // m_log.InfoFormat( |
513 | // "[XINVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder); | 512 | // "[XINVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder); |
514 | 513 | ||
515 | InventoryItemBase retrievedItem = GetItem(item); | 514 | InventoryItemBase retrievedItem = GetItem(item.Owner, item.ID); |
516 | 515 | ||
517 | if (retrievedItem == null) | 516 | if (retrievedItem == null) |
518 | { | 517 | { |
519 | m_log.WarnFormat( | 518 | m_log.WarnFormat( |
520 | "[XINVENTORY SERVICE]: Tried to update item {0} {1}, owner {2} but no existing item found.", | 519 | "[XINVENTORY SERVICE]: Tried to update item {0} {1}, owner {2} but no existing item found.", |
521 | item.Name, item.ID, item.Owner); | 520 | item.Name, item.ID, item.Owner); |
522 | 521 | ||
523 | return false; | 522 | return false; |
524 | } | 523 | } |
525 | 524 | ||
526 | // Do not allow invariants to change. Changes to folder ID occur in MoveItems() | 525 | // Do not allow invariants to change. Changes to folder ID occur in MoveItems() |
527 | if (retrievedItem.InvType != item.InvType | 526 | if (retrievedItem.InvType != item.InvType |
528 | || retrievedItem.AssetType != item.AssetType | 527 | || retrievedItem.AssetType != item.AssetType |
529 | || retrievedItem.Folder != item.Folder | 528 | || retrievedItem.Folder != item.Folder |
530 | || retrievedItem.CreatorIdentification != item.CreatorIdentification | 529 | || retrievedItem.CreatorIdentification != item.CreatorIdentification |
531 | || retrievedItem.Owner != item.Owner) | 530 | || retrievedItem.Owner != item.Owner) |
532 | { | 531 | { |
533 | m_log.WarnFormat( | 532 | m_log.WarnFormat( |
534 | "[XINVENTORY SERVICE]: Caller to UpdateItem() for {0} {1} tried to alter property(s) that should be invariant, (InvType, AssetType, Folder, CreatorIdentification, Owner), existing ({2}, {3}, {4}, {5}, {6}), update ({7}, {8}, {9}, {10}, {11})", | 533 | "[XINVENTORY SERVICE]: Caller to UpdateItem() for {0} {1} tried to alter property(s) that should be invariant, (InvType, AssetType, Folder, CreatorIdentification, Owner), existing ({2}, {3}, {4}, {5}, {6}), update ({7}, {8}, {9}, {10}, {11})", |
535 | retrievedItem.Name, | 534 | retrievedItem.Name, |
536 | retrievedItem.ID, | 535 | retrievedItem.ID, |
537 | retrievedItem.InvType, | 536 | retrievedItem.InvType, |
538 | retrievedItem.AssetType, | 537 | retrievedItem.AssetType, |
539 | retrievedItem.Folder, | 538 | retrievedItem.Folder, |
540 | retrievedItem.CreatorIdentification, | 539 | retrievedItem.CreatorIdentification, |
541 | retrievedItem.Owner, | 540 | retrievedItem.Owner, |
542 | item.InvType, | 541 | item.InvType, |
543 | item.AssetType, | 542 | item.AssetType, |
@@ -598,11 +597,11 @@ namespace OpenSim.Services.InventoryService | |||
598 | return true; | 597 | return true; |
599 | } | 598 | } |
600 | 599 | ||
601 | public virtual InventoryItemBase GetItem(InventoryItemBase item) | 600 | public virtual InventoryItemBase GetItem(UUID principalID, UUID itemID) |
602 | { | 601 | { |
603 | XInventoryItem[] items = m_Database.GetItems( | 602 | XInventoryItem[] items = m_Database.GetItems( |
604 | new string[] { "inventoryID" }, | 603 | new string[] { "inventoryID" }, |
605 | new string[] { item.ID.ToString() }); | 604 | new string[] { itemID.ToString() }); |
606 | 605 | ||
607 | if (items.Length == 0) | 606 | if (items.Length == 0) |
608 | return null; | 607 | return null; |
@@ -614,22 +613,17 @@ namespace OpenSim.Services.InventoryService | |||
614 | { | 613 | { |
615 | InventoryItemBase[] items = new InventoryItemBase[ids.Length]; | 614 | InventoryItemBase[] items = new InventoryItemBase[ids.Length]; |
616 | int i = 0; | 615 | int i = 0; |
617 | InventoryItemBase item = new InventoryItemBase(); | ||
618 | item.Owner = userID; | ||
619 | foreach (UUID id in ids) | 616 | foreach (UUID id in ids) |
620 | { | 617 | items[i++] = GetItem(userID, id); |
621 | item.ID = id; | ||
622 | items[i++] = GetItem(item); | ||
623 | } | ||
624 | 618 | ||
625 | return items; | 619 | return items; |
626 | } | 620 | } |
627 | 621 | ||
628 | public virtual InventoryFolderBase GetFolder(InventoryFolderBase folder) | 622 | public virtual InventoryFolderBase GetFolder(UUID principalID, UUID folderID) |
629 | { | 623 | { |
630 | XInventoryFolder[] folders = m_Database.GetFolders( | 624 | XInventoryFolder[] folders = m_Database.GetFolders( |
631 | new string[] { "folderID"}, | 625 | new string[] { "folderID"}, |
632 | new string[] { folder.ID.ToString() }); | 626 | new string[] { folderID.ToString() }); |
633 | 627 | ||
634 | if (folders.Length == 0) | 628 | if (folders.Length == 0) |
635 | return null; | 629 | return null; |
@@ -645,7 +639,7 @@ namespace OpenSim.Services.InventoryService | |||
645 | return new List<InventoryItemBase>(); | 639 | return new List<InventoryItemBase>(); |
646 | 640 | ||
647 | List<InventoryItemBase> ret = new List<InventoryItemBase>(); | 641 | List<InventoryItemBase> ret = new List<InventoryItemBase>(); |
648 | 642 | ||
649 | foreach (XInventoryItem x in items) | 643 | foreach (XInventoryItem x in items) |
650 | ret.Add(ConvertToOpenSim(x)); | 644 | ret.Add(ConvertToOpenSim(x)); |
651 | 645 | ||