using System; using System.Collections.Generic; using System.Reflection; using System.Text; using libsecondlife; using OpenSim.Framework.Console; using OpenSim.Framework.Interfaces; using OpenSim.Framework.Data; namespace OpenSim.Framework.InventoryServiceBase { public class InventoryServiceBase { protected Dictionary m_plugins = new Dictionary(); protected IAssetServer m_assetServer; public InventoryServiceBase(IAssetServer assetServer) { m_assetServer = assetServer; } /// /// Adds a new user server plugin - plugins will be requested in the order they were loaded. /// /// The filename to the user server plugin DLL public void AddPlugin(string FileName) { MainLog.Instance.Verbose("Inventorytorage: Attempting to load " + FileName); Assembly pluginAssembly = Assembly.LoadFrom(FileName); foreach (Type pluginType in pluginAssembly.GetTypes()) { if (!pluginType.IsAbstract) { Type typeInterface = pluginType.GetInterface("IInventoryData", true); if (typeInterface != null) { IInventoryData plug = (IInventoryData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); plug.Initialise(); this.m_plugins.Add(plug.getName(), plug); MainLog.Instance.Verbose("Inventorystorage: Added IInventoryData Interface"); } typeInterface = null; } } pluginAssembly = null; } /// /// Returns the root folder plus any folders in root (so down one level in the Inventory folders tree) /// /// /// public List RequestFirstLevelFolders(LLUUID userID) { List inventoryList = new List(); foreach (KeyValuePair plugin in m_plugins) { InventoryFolderBase rootFolder = plugin.Value.getUserRootFolder(userID); if (rootFolder != null) { inventoryList = plugin.Value.getInventoryFolders(rootFolder.folderID); inventoryList.Insert(0, rootFolder); return inventoryList; } } return inventoryList; } /// /// /// public InventoryFolderBase RequestUsersRoot(LLUUID userID) { foreach (KeyValuePair plugin in m_plugins) { return plugin.Value.getUserRootFolder(userID); } return null; } /// /// /// /// /// public List RequestSubFolders(LLUUID parentFolderID) { List inventoryList = new List(); foreach (KeyValuePair plugin in m_plugins) { return plugin.Value.getInventoryFolders(parentFolderID); } return inventoryList; } public List RequestFolderItems(LLUUID folderID) { List itemsList = new List(); foreach (KeyValuePair plugin in m_plugins) { itemsList = plugin.Value.getInventoryInFolder(folderID); return itemsList; } return itemsList; } /// /// /// /// public void AddNewInventorySet(UsersInventory inventory) { } public class UsersInventory { public Dictionary Folders = new Dictionary(); public Dictionary Items = new Dictionary(); public UsersInventory() { } protected virtual void CreateNewInventorySet() { } } } }