From 646bbbc84b8010e0dacbeed5342cdb045f46cc49 Mon Sep 17 00:00:00 2001
From: MW
Date: Wed, 27 Jun 2007 15:28:52 +0000
Subject: Some work on restructuring the namespaces / project names. Note this
doesn't compile yet as not all the code has been changed to use the new
namespaces. Am committing it now for feedback on the namespaces.
---
OpenSim/Framework/Data.DB4o/DB4oUserData.cs | 205 ++++++++++++++++++++++++++++
1 file changed, 205 insertions(+)
create mode 100644 OpenSim/Framework/Data.DB4o/DB4oUserData.cs
(limited to 'OpenSim/Framework/Data.DB4o/DB4oUserData.cs')
diff --git a/OpenSim/Framework/Data.DB4o/DB4oUserData.cs b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
new file mode 100644
index 0000000..8caa75d
--- /dev/null
+++ b/OpenSim/Framework/Data.DB4o/DB4oUserData.cs
@@ -0,0 +1,205 @@
+/*
+* 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 OpenSim.Framework.Data;
+using libsecondlife;
+
+namespace OpenSim.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";
+ }
+ }
+}
--
cgit v1.1