2007-04-02 09:35:33 +00:00
/ *
* Copyright ( c ) OpenSim project , http : //sim.opensecondlife.org/
*
* 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 < organization > 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 < copyright holder > ` ` 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 < copyright holder > 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 OpenSim.Framework.Console ;
using OpenSim.Framework.Interfaces ;
using Db4objects.Db4o ;
2007-04-02 10:14:36 +00:00
namespace OpenUser.Config.UserConfigDb4o
2007-04-02 09:35:33 +00:00
{
2007-04-02 10:14:36 +00:00
public class Db4oConfigPlugin : IUserConfig
2007-04-02 09:35:33 +00:00
{
2007-04-02 10:14:36 +00:00
public UserConfig GetConfigObject ( )
2007-04-02 09:35:33 +00:00
{
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Loading Db40Config dll" ) ;
2007-04-02 10:14:36 +00:00
return ( new DbUserConfig ( ) ) ;
2007-04-02 09:35:33 +00:00
}
}
2007-04-02 10:14:36 +00:00
public class DbUserConfig : UserConfig
2007-04-02 09:35:33 +00:00
{
private IObjectContainer db ;
public void LoadDefaults ( ) {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . HIGH , "Config.cs:LoadDefaults() - Please press enter to retain default or enter new settings" ) ;
2007-04-02 09:35:33 +00:00
2007-04-11 20:07:58 +00:00
this . DefaultStartupMsg = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Default startup message" , "Welcome to OGS" ) ;
2007-04-02 09:35:33 +00:00
2007-04-21 05:09:06 +00:00
this . GridServerURL = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Grid server URL" , "http://127.0.0.1:8001/" ) ;
this . GridSendKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to send to grid server" , "null" ) ;
this . GridRecvKey = OpenSim . Framework . Console . MainConsole . Instance . CmdPrompt ( "Key to expect from grid server" , "null" ) ;
2007-04-02 09:35:33 +00:00
}
public override void InitConfig ( ) {
try {
2007-04-02 10:14:36 +00:00
db = Db4oFactory . OpenFile ( "openuser.yap" ) ;
IObjectSet result = db . Get ( typeof ( DbUserConfig ) ) ;
2007-04-02 09:35:33 +00:00
if ( result . Count = = 1 ) {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Config.cs:InitConfig() - Found a UserConfig object in the local database, loading" ) ;
2007-04-02 10:14:36 +00:00
foreach ( DbUserConfig cfg in result ) {
this . GridServerURL = cfg . GridServerURL ;
this . GridSendKey = cfg . GridSendKey ;
this . GridRecvKey = cfg . GridRecvKey ;
this . DefaultStartupMsg = cfg . DefaultStartupMsg ;
2007-04-02 09:35:33 +00:00
}
} else {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Config.cs:InitConfig() - Could not find object in database, loading precompiled defaults" ) ;
2007-04-02 09:35:33 +00:00
LoadDefaults ( ) ;
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Writing out default settings to local database" ) ;
2007-04-02 09:35:33 +00:00
db . Set ( this ) ;
db . Close ( ) ;
}
} catch ( Exception e ) {
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . MEDIUM , "Config.cs:InitConfig() - Exception occured" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . MEDIUM , e . ToString ( ) ) ;
2007-04-02 09:35:33 +00:00
}
2007-05-12 15:44:10 +00:00
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "User settings loaded:" ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Default startup message: " + this . DefaultStartupMsg ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Grid server URL: " + this . GridServerURL ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to send to grid: " + this . GridSendKey ) ;
OpenSim . Framework . Console . MainConsole . Instance . WriteLine ( OpenSim . Framework . Console . LogPriority . LOW , "Key to expect from grid: " + this . GridRecvKey ) ;
2007-04-02 09:35:33 +00:00
}
public void Shutdown ( ) {
db . Close ( ) ;
}
}
}