/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenSimulator Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
using System.Collections.Generic;
using OpenMetaverse;
using OpenSim.Framework;
namespace OpenSim.Data
{
///
/// An interface for accessing inventory data from a storage server
///
public interface IInventoryDataPlugin : IPlugin
{
///
/// Initialises the interface
///
void Initialise(string connect);
///
/// Returns all descendent folders of this folder. Does not return the parent folder itself.
///
/// The folder to get subfolders for
/// A list of inventory folders
List getFolderHierarchy(UUID parentID);
///
/// Returns a list of inventory items contained within the specified folder
///
/// The UUID of the target folder
/// A List of InventoryItemBase items
List getInventoryInFolder(UUID folderID);
///
/// Returns a list of the root folders within a users inventory
///
/// The user whos inventory is to be searched
/// A list of folder objects
List getUserRootFolders(UUID user);
///
/// Returns the users inventory root folder.
///
/// The UUID of the user who is having inventory being returned
/// Root inventory folder, null if no root inventory folder was found
InventoryFolderBase getUserRootFolder(UUID user);
///
/// Returns a list of inventory folders contained in the folder 'parentID'
///
/// The folder to get subfolders for
/// A list of inventory folders
List getInventoryFolders(UUID parentID);
///
/// Returns an inventory item by its UUID
///
/// The UUID of the item to be returned
/// A class containing item information
InventoryItemBase getInventoryItem(UUID item);
///
/// Returns a specified inventory folder by its UUID
///
/// The UUID of the folder to be returned
/// A class containing folder information
InventoryFolderBase getInventoryFolder(UUID folder);
///
/// Creates a new inventory item based on item
///
/// The item to be created
void addInventoryItem(InventoryItemBase item);
///
/// Updates an inventory item with item (updates based on ID)
///
/// The updated item
void updateInventoryItem(InventoryItemBase item);
///
///
///
///
void deleteInventoryItem(UUID item);
///
///
///
///
InventoryItemBase queryInventoryItem(UUID item);
///
///
///
///
InventoryFolderBase queryInventoryFolder(UUID folder);
///
/// Adds a new folder specified by folder
///
/// The inventory folder
void addInventoryFolder(InventoryFolderBase folder);
///
/// Updates a folder based on its ID with folder
///
/// The inventory folder
void updateInventoryFolder(InventoryFolderBase folder);
///
/// Updates a folder based on its ID with folder
///
/// The inventory folder
void moveInventoryFolder(InventoryFolderBase folder);
///
/// Deletes a folder. Thie will delete both the folder itself and its contents (items and descendent folders)
///
/// The id of the folder
void deleteInventoryFolder(UUID folder);
///
/// Returns all activated gesture-items in the inventory of the specified avatar.
///
///
/// The of the avatar
///
///
/// The list of gestures (s)
///
List fetchActiveGestures(UUID avatarID);
}
}