/* * Copyright (c) Contributors, http://www.openmetaverse.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 OpenSim 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; using System.Collections.Generic; using System.Text; using OpenGrid.Framework.Data; using libsecondlife; namespace OpenGrid.Framework.Data.DB4o { /// /// A User storage interface for the DB4o database system /// public class DB4oUserData : IUserData { /// /// The database manager /// DB4oUserManager manager; /// /// Artificial constructor called upon plugin load /// public void Initialise() { manager = new DB4oUserManager("userprofiles.yap"); } /// /// Loads a specified user profile from a UUID /// /// The users UUID /// A user profile public UserProfileData getUserByUUID(LLUUID uuid) { if(manager.userProfiles.ContainsKey(uuid)) return manager.userProfiles[uuid]; return null; } /// /// Returns a user by searching for its name /// /// The users account name /// A matching users profile public UserProfileData getUserByName(string name) { return getUserByName(name.Split(' ')[0], name.Split(' ')[1]); } /// /// Returns a user by searching for its name /// /// The first part of the users account name /// The second part of the users account name /// A matching users profile public UserProfileData getUserByName(string fname, string lname) { foreach (UserProfileData profile in manager.userProfiles.Values) { if (profile.username == fname && profile.surname == lname) return profile; } return null; } /// /// Returns a user by UUID direct /// /// The users account ID /// A matching users profile public UserAgentData getAgentByUUID(LLUUID uuid) { try { return getUserByUUID(uuid).currentAgent; } catch (Exception e) { return null; } } /// /// Returns a session by account name /// /// The account name /// The users session agent public UserAgentData getAgentByName(string name) { return getAgentByName(name.Split(' ')[0], name.Split(' ')[1]); } /// /// Returns a session by account name /// /// The first part of the users account name /// The second part of the users account name /// A user agent public UserAgentData getAgentByName(string fname, string lname) { try { return getUserByName(fname,lname).currentAgent; } catch (Exception e) { return null; } } /// /// Creates a new user profile /// /// The profile to add to the database public void addNewUserProfile(UserProfileData user) { try { manager.AddRow(user); } catch (Exception e) { Console.WriteLine(e.ToString()); } } /// /// Creates a new user agent /// /// The agent to add to the database public void addNewUserAgent(UserAgentData agent) { // Do nothing. yet. } /// /// Transfers money between two user accounts /// /// Starting account /// End account /// The amount to move /// Success? public bool moneyTransferRequest(LLUUID from, LLUUID to, uint amount) { return true; } /// /// Transfers inventory between two accounts /// /// Move to inventory server /// Senders account /// Recievers account /// Inventory item /// Success? public bool inventoryTransferRequest(LLUUID from, LLUUID to, LLUUID item) { return true; } /// /// Returns the name of the storage provider /// /// Storage provider name public string getName() { return "DB4o Userdata"; } /// /// Returns the version of the storage provider /// /// Storage provider version public string getVersion() { return "0.1"; } } }