/// <summary> /// Read a library inventory folder from a loaded configuration /// </summary> /// <param name="source"></param> private void ReadFolderFromConfig(IConfig config, string path) { InventoryFolderImpl folderInfo = new InventoryFolderImpl(); folderInfo.ID = new UUID(config.GetString("folderID", m_LibraryRootFolder.ID.ToString())); folderInfo.Name = config.GetString("name", "unknown"); folderInfo.ParentID = new UUID(config.GetString("parentFolderID", m_LibraryRootFolder.ID.ToString())); folderInfo.Type = (short)config.GetInt("type", 8); folderInfo.Owner = libOwner; folderInfo.Version = 1; if (libraryFolders.ContainsKey(folderInfo.ParentID)) { InventoryFolderImpl parentFolder = libraryFolders[folderInfo.ParentID]; libraryFolders.Add(folderInfo.ID, folderInfo); parentFolder.AddChildFolder(folderInfo); // m_log.InfoFormat("[LIBRARY INVENTORY]: Adding folder {0} ({1})", folderInfo.name, folderInfo.folderID); } else { m_log.WarnFormat( "[LIBRARY INVENTORY]: Couldn't add folder {0} ({1}) since parent folder with ID {2} does not exist!", folderInfo.Name, folderInfo.ID, folderInfo.ParentID); } }
public void AddToDefaultInventory(InventoryFolderImpl folder) { foreach (InventoryFolderImpl f in folder.RequestListOfFolderImpls()) { m_LibraryRootFolder.AddChildFolder(f); } foreach (InventoryItemBase i in folder.RequestListOfItems()) { m_LibraryRootFolder.Items.Add(i.ID, i); } }
private void TraverseFolders(InventoryFolderImpl folderimp, UUID ID, IInventoryService InventoryService) { InventoryCollection col = InventoryService.GetFolderContent(LibraryOwner, ID); foreach (InventoryItemBase item in col.Items) { folderimp.Items.Add(item.ID, item); } foreach (InventoryFolderBase folder in col.Folders) { InventoryFolderImpl childFolder = new InventoryFolderImpl(folder); TraverseFolders(childFolder, folder.ID, InventoryService); folderimp.AddChildFolder(childFolder); } }
/// <summary> /// Read a library inventory folder from a loaded configuration /// </summary> /// <param name="source"></param> private void ReadFolderFromConfig(IConfig config, string path) { InventoryFolderImpl folderInfo = new InventoryFolderImpl(); folderInfo.ID = new UUID(config.GetString("folderID", m_service.LibraryRootFolder.ID.ToString())); folderInfo.Name = config.GetString("name", "unknown"); folderInfo.ParentID = new UUID(config.GetString("parentFolderID", m_service.LibraryRootFolder.ID.ToString())); folderInfo.Type = (short)config.GetInt("type", 8); folderInfo.Owner = m_service.LibraryOwner; folderInfo.Version = 1; m_inventoryService.AddFolder(folderInfo); m_folder.AddChildFolder(folderInfo); }
/// <summary> /// Handle an inventory folder move request from the client. /// /// If the inventory service has not yet delievered the inventory /// for this user then the request will be queued. /// </summary> /// /// <param name="folderID"></param> /// <param name="parentID"></param> /// <returns> /// true if the delete was successful, or if it was queued pending folder receipt /// false if the folder to be deleted did not exist. /// </returns> public bool MoveFolder(UUID folderID, UUID parentID) { // m_log.DebugFormat( // "[AGENT INVENTORY]: Moving inventory folder {0} into folder {1} for {2} {3}", // parentID, remoteClient.Name, remoteClient.Name, remoteClient.AgentId); if (m_hasReceivedInventory) { InventoryFolderBase baseFolder = new InventoryFolderBase(); baseFolder.Owner = m_userProfile.ID; baseFolder.ID = folderID; baseFolder.ParentID = parentID; m_InventoryService.MoveFolder(baseFolder); InventoryFolderImpl folder = RootFolder.FindFolder(folderID); InventoryFolderImpl parentFolder = RootFolder.FindFolder(parentID); if (parentFolder != null && folder != null) { InventoryFolderImpl oldParentFolder = RootFolder.FindFolder(folder.ParentID); if (oldParentFolder != null) { oldParentFolder.RemoveChildFolder(folderID); parentFolder.AddChildFolder(folder); } else { return(false); } } else { return(false); } return(true); } else { AddRequest( new InventoryRequest( Delegate.CreateDelegate(typeof(MoveFolderDelegate), this, "MoveFolder"), new object[] { folderID, parentID })); return(true); } }
/// <summary> /// Recursively, in depth-first order, add all the folders we've received (stored /// in a dictionary indexed by parent ID) into the tree that describes user folder /// heirarchy /// Any folder that is resolved into the tree is also added to resolvedFolderDictionary, /// indexed by folder ID. /// </summary> /// <param name="parentId"> /// A <see cref="UUID"/> /// </param> private void ResolveReceivedFolders(InventoryFolderImpl parentFolder, IDictionary <UUID, IList <InventoryFolderImpl> > receivedFolderDictionary, IDictionary <UUID, InventoryFolderImpl> resolvedFolderDictionary) { if (receivedFolderDictionary.ContainsKey(parentFolder.ID)) { List <InventoryFolderImpl> resolvedFolders = new List <InventoryFolderImpl>(); // Folders we've resolved with this invocation foreach (InventoryFolderImpl folder in receivedFolderDictionary[parentFolder.ID]) { if (parentFolder.ContainsChildFolder(folder.ID)) { m_log.WarnFormat( "[INVENTORY CACHE]: Received folder {0} {1} from inventory service which has already been received", folder.Name, folder.ID); } else { if (resolvedFolderDictionary.ContainsKey(folder.ID)) { m_log.WarnFormat( "[INVENTORY CACHE]: Received folder {0} {1} from inventory service has already been received but with different parent", folder.Name, folder.ID); } else { resolvedFolders.Add(folder); resolvedFolderDictionary[folder.ID] = folder; parentFolder.AddChildFolder(folder); } } } // foreach (folder in pendingCategorizationFolders[parentFolder.ID]) receivedFolderDictionary.Remove(parentFolder.ID); foreach (InventoryFolderImpl folder in resolvedFolders) { ResolveReceivedFolders(folder, receivedFolderDictionary, resolvedFolderDictionary); } } // if (receivedFolderDictionary.ContainsKey(parentFolder.ID)) }
private void TraverseFolders(InventoryFolderImpl folderimp, UUID ID, Scene m_MockScene) { InventoryCollection col = m_MockScene.InventoryService.GetFolderContent(m_service.LibraryOwner, ID); foreach (InventoryItemBase item in col.Items) { folderimp.Items[item.ID] = item; } foreach (InventoryFolderBase folder in col.Folders) { InventoryFolderImpl childFolder = new InventoryFolderImpl(folder); foreach (KeyValuePair <String, AssetType> type in m_assetTypes) { if (childFolder.Name.ToLower().StartsWith(type.Key.ToLower())) { childFolder.Type = (short)type.Value; } } TraverseFolders(childFolder, folder.ID, m_MockScene); folderimp.AddChildFolder(childFolder); } }
/// <summary> /// Recursively, in depth-first order, add all the folders we've received (stored /// in a dictionary indexed by parent ID) into the tree that describes user folder /// heirarchy /// Any folder that is resolved into the tree is also added to resolvedFolderDictionary, /// indexed by folder ID. /// </summary> /// <param name="parentId"> /// A <see cref="UUID"/> /// </param> private void ResolveReceivedFolders(InventoryFolderImpl parentFolder, IDictionary<UUID, IList<InventoryFolderImpl>> receivedFolderDictionary, IDictionary<UUID, InventoryFolderImpl> resolvedFolderDictionary) { if (receivedFolderDictionary.ContainsKey(parentFolder.ID)) { List<InventoryFolderImpl> resolvedFolders = new List<InventoryFolderImpl>(); // Folders we've resolved with this invocation foreach (InventoryFolderImpl folder in receivedFolderDictionary[parentFolder.ID]) { if (parentFolder.ContainsChildFolder(folder.ID)) { m_log.WarnFormat( "[INVENTORY CACHE]: Received folder {0} {1} from inventory service which has already been received", folder.Name, folder.ID); } else { if (resolvedFolderDictionary.ContainsKey(folder.ID)) { m_log.WarnFormat( "[INVENTORY CACHE]: Received folder {0} {1} from inventory service has already been received but with different parent", folder.Name, folder.ID); } else { resolvedFolders.Add(folder); resolvedFolderDictionary[folder.ID] = folder; parentFolder.AddChildFolder(folder); } } } // foreach (folder in pendingCategorizationFolders[parentFolder.ID]) receivedFolderDictionary.Remove(parentFolder.ID); foreach (InventoryFolderImpl folder in resolvedFolders) ResolveReceivedFolders(folder, receivedFolderDictionary, resolvedFolderDictionary); } // if (receivedFolderDictionary.ContainsKey(parentFolder.ID)) }