aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Services/InventoryService/XInventoryService.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Services/InventoryService/XInventoryService.cs62
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