From 591e1704283330b0120e99819ff68404d1c92d76 Mon Sep 17 00:00:00 2001
From: MW
Date: Fri, 8 Jun 2007 16:55:44 +0000
Subject: Re-imported OpenGridServices from trunk
---
.../OpenGrid.Framework.Data.DB4o/DB4oManager.cs | 165 +++++++++++++++++++++
1 file changed, 165 insertions(+)
create mode 100644 OpenGridServices/OpenGrid.Framework.Data.DB4o/DB4oManager.cs
(limited to 'OpenGridServices/OpenGrid.Framework.Data.DB4o/DB4oManager.cs')
diff --git a/OpenGridServices/OpenGrid.Framework.Data.DB4o/DB4oManager.cs b/OpenGridServices/OpenGrid.Framework.Data.DB4o/DB4oManager.cs
new file mode 100644
index 0000000..356a49c
--- /dev/null
+++ b/OpenGridServices/OpenGrid.Framework.Data.DB4o/DB4oManager.cs
@@ -0,0 +1,165 @@
+/*
+* 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 Db4objects.Db4o;
+using OpenGrid.Framework.Data;
+using libsecondlife;
+
+namespace OpenGrid.Framework.Data.DB4o
+{
+ ///
+ /// A Database manager for Db4o
+ ///
+ class DB4oGridManager
+ {
+ ///
+ /// A list of the current regions connected (in-memory cache)
+ ///
+ public Dictionary simProfiles = new Dictionary();
+ ///
+ /// Database File Name
+ ///
+ string dbfl;
+
+ ///
+ /// Creates a new grid storage manager
+ ///
+ /// Filename to the database file
+ public DB4oGridManager(string db4odb)
+ {
+ dbfl = db4odb;
+ IObjectContainer database;
+ database = Db4oFactory.OpenFile(dbfl);
+ IObjectSet result = database.Get(typeof(SimProfileData));
+ // Loads the file into the in-memory cache
+ foreach(SimProfileData row in result) {
+ simProfiles.Add(row.UUID, row);
+ }
+ database.Close();
+ }
+
+ ///
+ /// Adds a new profile to the database (Warning: Probably slow.)
+ ///
+ /// The profile to add
+ /// Successful?
+ public bool AddRow(SimProfileData row)
+ {
+ if (simProfiles.ContainsKey(row.UUID))
+ {
+ simProfiles[row.UUID] = row;
+ }
+ else
+ {
+ simProfiles.Add(row.UUID, row);
+ }
+
+ try
+ {
+ IObjectContainer database;
+ database = Db4oFactory.OpenFile(dbfl);
+ database.Set(row);
+ database.Close();
+ return true;
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+ }
+
+
+ }
+
+ ///
+ /// A manager for the DB4o database (user profiles)
+ ///
+ class DB4oUserManager
+ {
+ ///
+ /// A list of the user profiles (in memory cache)
+ ///
+ public Dictionary userProfiles = new Dictionary();
+ ///
+ /// Database filename
+ ///
+ string dbfl;
+
+ ///
+ /// Initialises a new DB manager
+ ///
+ /// The filename to the database
+ public DB4oUserManager(string db4odb)
+ {
+ dbfl = db4odb;
+ IObjectContainer database;
+ database = Db4oFactory.OpenFile(dbfl);
+ // Load to cache
+ IObjectSet result = database.Get(typeof(UserProfileData));
+ foreach (UserProfileData row in result)
+ {
+ userProfiles.Add(row.UUID, row);
+ }
+ database.Close();
+ }
+
+ ///
+ /// Adds a new profile to the database (Warning: Probably slow.)
+ ///
+ /// The profile to add
+ /// Successful?
+ public bool AddRow(UserProfileData row)
+ {
+ if (userProfiles.ContainsKey(row.UUID))
+ {
+ userProfiles[row.UUID] = row;
+ }
+ else
+ {
+ userProfiles.Add(row.UUID, row);
+ }
+
+ try
+ {
+ IObjectContainer database;
+ database = Db4oFactory.OpenFile(dbfl);
+ database.Set(row);
+ database.Close();
+ return true;
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+ }
+
+
+ }
+}
--
cgit v1.1