From c52c68f314c67c76c7181a6d0828f476290fbd66 Mon Sep 17 00:00:00 2001
From: Sean Dague
Date: Wed, 2 Apr 2008 15:24:31 +0000
Subject: whole lot more moving
---
OpenSim/Data/DB4o/DB4oUserData.cs | 270 ++++++++++++++++++++++++++++++++++++++
1 file changed, 270 insertions(+)
create mode 100644 OpenSim/Data/DB4o/DB4oUserData.cs
(limited to 'OpenSim/Data/DB4o/DB4oUserData.cs')
diff --git a/OpenSim/Data/DB4o/DB4oUserData.cs b/OpenSim/Data/DB4o/DB4oUserData.cs
new file mode 100644
index 0000000..3072e81
--- /dev/null
+++ b/OpenSim/Data/DB4o/DB4oUserData.cs
@@ -0,0 +1,270 @@
+/*
+ * 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 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.IO;
+using libsecondlife;
+
+namespace OpenSim.Framework.Data.DB4o
+{
+ ///
+ /// A User storage interface for the DB4o database system
+ ///
+ public class DB4oUserData : IUserData
+ {
+ //private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+
+ ///
+ /// The database manager
+ ///
+ private DB4oUserManager manager;
+
+ ///
+ /// Artificial constructor called upon plugin load
+ ///
+ public void Initialise()
+ {
+ manager = new DB4oUserManager(Path.Combine(Util.dataDir(), "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)
+ {
+ 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)
+ {
+ return null;
+ }
+ }
+ public void StoreWebLoginKey(LLUUID AgentID, LLUUID WebLoginKey)
+ {
+ UserProfileData user = GetUserByUUID(AgentID);
+ user.webLoginKey = WebLoginKey;
+ UpdateUserProfile(user);
+
+ }
+ #region User Friends List Data
+
+ public void AddNewUserFriend(LLUUID friendlistowner, LLUUID friend, uint perms)
+ {
+ //m_log.Info("[FRIEND]: Stub AddNewUserFriend called");
+ }
+
+ public void RemoveUserFriend(LLUUID friendlistowner, LLUUID friend)
+ {
+ //m_log.Info("[FRIEND]: Stub RemoveUserFriend called");
+ }
+ public void UpdateUserFriendPerms(LLUUID friendlistowner, LLUUID friend, uint perms)
+ {
+ //m_log.Info("[FRIEND]: Stub UpdateUserFriendPerms called");
+ }
+
+
+ public List GetUserFriendList(LLUUID friendlistowner)
+ {
+ //m_log.Info("[FRIEND]: Stub GetUserFriendList called");
+ return new List();
+ }
+
+ #endregion
+
+ public void UpdateUserCurrentRegion(LLUUID avatarid, LLUUID regionuuid)
+ {
+ //m_log.Info("[USER]: Stub UpdateUserCUrrentRegion called");
+ }
+
+
+
+ public List GeneratePickerResults(LLUUID queryID, string query)
+ {
+ //Do nothing yet
+ List returnlist = new List();
+ return returnlist;
+ }
+
+ ///
+ /// Creates a new user profile
+ ///
+ /// The profile to add to the database
+ public void AddNewUserProfile(UserProfileData user)
+ {
+ try
+ {
+ manager.UpdateRecord(user);
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ }
+ }
+
+ ///
+ /// Creates a new user profile
+ ///
+ /// The profile to add to the database
+ /// True on success, false on error
+ public bool UpdateUserProfile(UserProfileData user)
+ {
+ try
+ {
+ return manager.UpdateRecord(user);
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e.ToString());
+ return false;
+ }
+ }
+
+
+ ///
+ /// 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
+ /// Receivers 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";
+ }
+ }
+}
--
cgit v1.1