* Introduced common abstract AssetDataBase implementing IAssetProvider

* changed the semantics of SQLiteBase to SQLiteUtils
* Added abstract placeholder files for the other db providers
0.6.0-stable
lbsa71 2008-03-28 14:54:20 +00:00
parent 830626999c
commit 8c901e9347
12 changed files with 108 additions and 48 deletions

View File

@ -34,7 +34,7 @@ using OpenSim.Framework.Console;
namespace OpenSim.Framework.Data.MSSQL namespace OpenSim.Framework.Data.MSSQL
{ {
internal class MSSQLAssetData : IAssetProvider internal class MSSQLAssetData : AssetDataBase
{ {
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
@ -66,7 +66,7 @@ namespace OpenSim.Framework.Data.MSSQL
UpgradeAssetsTable(tableList["assets"]); UpgradeAssetsTable(tableList["assets"]);
} }
public AssetBase FetchAsset(LLUUID assetID) override public AssetBase FetchAsset(LLUUID assetID)
{ {
AssetBase asset = null; AssetBase asset = null;
@ -83,7 +83,7 @@ namespace OpenSim.Framework.Data.MSSQL
return asset; return asset;
} }
public void CreateAsset(AssetBase asset) override public void CreateAsset(AssetBase asset)
{ {
if (ExistsAsset((LLUUID) asset.FullID)) if (ExistsAsset((LLUUID) asset.FullID))
{ {
@ -129,7 +129,7 @@ namespace OpenSim.Framework.Data.MSSQL
} }
public void UpdateAsset(AssetBase asset) override public void UpdateAsset(AssetBase asset)
{ {
SqlCommand command = new SqlCommand("UPDATE assets set id = @id, " + SqlCommand command = new SqlCommand("UPDATE assets set id = @id, " +
"name = @name, " + "name = @name, " +
@ -169,7 +169,7 @@ namespace OpenSim.Framework.Data.MSSQL
} }
} }
public bool ExistsAsset(LLUUID uuid) override public bool ExistsAsset(LLUUID uuid)
{ {
if (FetchAsset(uuid) != null) if (FetchAsset(uuid) != null)
{ {
@ -181,7 +181,7 @@ namespace OpenSim.Framework.Data.MSSQL
/// <summary> /// <summary>
/// All writes are immediately commited to the database, so this is a no-op /// All writes are immediately commited to the database, so this is a no-op
/// </summary> /// </summary>
public void CommitAssets() override public void CommitAssets()
{ {
} }
@ -189,7 +189,7 @@ namespace OpenSim.Framework.Data.MSSQL
#region IPlugin Members #region IPlugin Members
public void Initialise() override public void Initialise()
{ {
IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini"); IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini");
string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source"); string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source");
@ -205,13 +205,13 @@ namespace OpenSim.Framework.Data.MSSQL
TestTables(); TestTables();
} }
public string Version override public string Version
{ {
// get { return database.getVersion(); } // get { return database.getVersion(); }
get { return database.getVersion(); } get { return database.getVersion(); }
} }
public string Name override public string Name
{ {
get { return "MSSQL Asset storage engine"; } get { return "MSSQL Asset storage engine"; }
} }

View File

@ -34,7 +34,7 @@ using OpenSim.Framework.Console;
namespace OpenSim.Framework.Data.MySQL namespace OpenSim.Framework.Data.MySQL
{ {
internal class MySQLAssetData : IAssetProvider internal class MySQLAssetData : AssetDataBase, IPlugin
{ {
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
@ -66,7 +66,7 @@ namespace OpenSim.Framework.Data.MySQL
UpgradeAssetsTable(tableList["assets"]); UpgradeAssetsTable(tableList["assets"]);
} }
public AssetBase FetchAsset(LLUUID assetID) override public AssetBase FetchAsset(LLUUID assetID)
{ {
AssetBase asset = null; AssetBase asset = null;
lock (_dbConnection) lock (_dbConnection)
@ -108,7 +108,7 @@ namespace OpenSim.Framework.Data.MySQL
return asset; return asset;
} }
public void CreateAsset(AssetBase asset) override public void CreateAsset(AssetBase asset)
{ {
lock (_dbConnection) lock (_dbConnection)
{ {
@ -147,12 +147,12 @@ namespace OpenSim.Framework.Data.MySQL
} }
} }
public void UpdateAsset(AssetBase asset) override public void UpdateAsset(AssetBase asset)
{ {
CreateAsset(asset); CreateAsset(asset);
} }
public bool ExistsAsset(LLUUID uuid) override public bool ExistsAsset(LLUUID uuid)
{ {
throw new Exception("The method or operation is not implemented."); throw new Exception("The method or operation is not implemented.");
} }
@ -160,7 +160,7 @@ namespace OpenSim.Framework.Data.MySQL
/// <summary> /// <summary>
/// All writes are immediately commited to the database, so this is a no-op /// All writes are immediately commited to the database, so this is a no-op
/// </summary> /// </summary>
public void CommitAssets() override public void CommitAssets()
{ {
} }
@ -168,7 +168,7 @@ namespace OpenSim.Framework.Data.MySQL
#region IPlugin Members #region IPlugin Members
public void Initialise() override public void Initialise()
{ {
IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini"); IniFile GridDataMySqlFile = new IniFile("mysql_connection.ini");
string hostname = GridDataMySqlFile.ParseFileReadValue("hostname"); string hostname = GridDataMySqlFile.ParseFileReadValue("hostname");
@ -183,12 +183,12 @@ namespace OpenSim.Framework.Data.MySQL
TestTables(); TestTables();
} }
public string Version override public string Version
{ {
get { return _dbConnection.getVersion(); } get { return _dbConnection.getVersion(); }
} }
public string Name override public string Name
{ {
get { return "MySQL Asset storage engine"; } get { return "MySQL Asset storage engine"; }
} }

View File

@ -37,7 +37,7 @@ namespace OpenSim.Framework.Data.SQLite
/// <summary> /// <summary>
/// A User storage interface for the DB4o database system /// A User storage interface for the DB4o database system
/// </summary> /// </summary>
public class SQLiteAssetData : SQLiteBase, IAssetProvider public class SQLiteAssetData : AssetDataBase
{ {
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
@ -63,7 +63,7 @@ namespace OpenSim.Framework.Data.SQLite
return; return;
} }
public AssetBase FetchAsset(LLUUID uuid) override public AssetBase FetchAsset(LLUUID uuid)
{ {
using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn)) using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn))
@ -86,7 +86,7 @@ namespace OpenSim.Framework.Data.SQLite
} }
} }
public void CreateAsset(AssetBase asset) override public void CreateAsset(AssetBase asset)
{ {
m_log.Info("[SQLITE]: Creating Asset " + Util.ToRawUuidString(asset.FullID)); m_log.Info("[SQLITE]: Creating Asset " + Util.ToRawUuidString(asset.FullID));
if (ExistsAsset(asset.FullID)) if (ExistsAsset(asset.FullID))
@ -111,7 +111,7 @@ namespace OpenSim.Framework.Data.SQLite
} }
} }
public void UpdateAsset(AssetBase asset) override public void UpdateAsset(AssetBase asset)
{ {
LogAssetLoad(asset); LogAssetLoad(asset);
@ -144,7 +144,7 @@ namespace OpenSim.Framework.Data.SQLite
asset.InvType, temporary, local, assetLength)); asset.InvType, temporary, local, assetLength));
} }
public bool ExistsAsset(LLUUID uuid) override public bool ExistsAsset(LLUUID uuid)
{ {
using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn)) using (SqliteCommand cmd = new SqliteCommand(SelectAssetSQL, m_conn))
{ {
@ -175,7 +175,7 @@ namespace OpenSim.Framework.Data.SQLite
} }
} }
public void CommitAssets() // force a sync to the database override public void CommitAssets() // force a sync to the database
{ {
m_log.Info("[SQLITE]: Attempting commit"); m_log.Info("[SQLITE]: Attempting commit");
// lock (ds) // lock (ds)
@ -197,14 +197,14 @@ namespace OpenSim.Framework.Data.SQLite
{ {
DataTable assets = new DataTable("assets"); DataTable assets = new DataTable("assets");
createCol(assets, "UUID", typeof (String)); SQLiteUtil.createCol(assets, "UUID", typeof (String));
createCol(assets, "Name", typeof (String)); SQLiteUtil.createCol(assets, "Name", typeof (String));
createCol(assets, "Description", typeof (String)); SQLiteUtil.createCol(assets, "Description", typeof (String));
createCol(assets, "Type", typeof (Int32)); SQLiteUtil.createCol(assets, "Type", typeof (Int32));
createCol(assets, "InvType", typeof (Int32)); SQLiteUtil.createCol(assets, "InvType", typeof (Int32));
createCol(assets, "Local", typeof (Boolean)); SQLiteUtil.createCol(assets, "Local", typeof (Boolean));
createCol(assets, "Temporary", typeof (Boolean)); SQLiteUtil.createCol(assets, "Temporary", typeof (Boolean));
createCol(assets, "Data", typeof (Byte[])); SQLiteUtil.createCol(assets, "Data", typeof (Byte[]));
// Add in contraints // Add in contraints
assets.PrimaryKey = new DataColumn[] {assets.Columns["UUID"]}; assets.PrimaryKey = new DataColumn[] {assets.Columns["UUID"]};
return assets; return assets;
@ -248,7 +248,7 @@ namespace OpenSim.Framework.Data.SQLite
private void InitDB(SqliteConnection conn) private void InitDB(SqliteConnection conn)
{ {
string createAssets = defineTable(createAssetsTable()); string createAssets = SQLiteUtil.defineTable(createAssetsTable());
SqliteCommand pcmd = new SqliteCommand(createAssets, conn); SqliteCommand pcmd = new SqliteCommand(createAssets, conn);
pcmd.ExecuteNonQuery(); pcmd.ExecuteNonQuery();
} }
@ -272,7 +272,7 @@ namespace OpenSim.Framework.Data.SQLite
#region IPlugin interface #region IPlugin interface
public string Version override public string Version
{ {
get get
{ {
@ -286,12 +286,12 @@ namespace OpenSim.Framework.Data.SQLite
} }
} }
public void Initialise() override public void Initialise()
{ {
Initialise("AssetStorage.db", ""); Initialise("AssetStorage.db", "");
} }
public string Name override public string Name
{ {
get { return "SQLite Asset storage engine"; } get { return "SQLite Asset storage engine"; }
} }

View File

@ -35,7 +35,7 @@ using OpenSim.Framework.Console;
namespace OpenSim.Framework.Data.SQLite namespace OpenSim.Framework.Data.SQLite
{ {
public class SQLiteInventoryStore : SQLiteBase, IInventoryData public class SQLiteInventoryStore : SQLiteUtil, IInventoryData
{ {
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

View File

@ -35,7 +35,7 @@ using OpenSim.Framework.Console;
namespace OpenSim.Framework.Data.SQLite namespace OpenSim.Framework.Data.SQLite
{ {
internal class SQLiteManager : SQLiteBase internal class SQLiteManager : SQLiteUtil
{ {
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

View File

@ -37,7 +37,7 @@ namespace OpenSim.Framework.Data.SQLite
/// <summary> /// <summary>
/// A User storage interface for the SQLite database system /// A User storage interface for the SQLite database system
/// </summary> /// </summary>
public class SQLiteUserData : SQLiteBase, IUserData public class SQLiteUserData : SQLiteUtil, IUserData
{ {
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

View File

@ -34,17 +34,17 @@ namespace OpenSim.Framework.Data.SQLite
/// <summary> /// <summary>
/// A base class for methods needed by all SQLite database classes /// A base class for methods needed by all SQLite database classes
/// </summary> /// </summary>
public class SQLiteBase public class SQLiteUtil
{ {
/*********************************************************************** /***********************************************************************
* *
* Database Definition Functions * Database Definition Helper Functions
* *
* This should be db agnostic as we define them in ADO.NET terms * This should be db agnostic as we define them in ADO.NET terms
* *
**********************************************************************/ **********************************************************************/
protected static void createCol(DataTable dt, string name, Type type) public static void createCol(DataTable dt, string name, Type type)
{ {
DataColumn col = new DataColumn(name, type); DataColumn col = new DataColumn(name, type);
dt.Columns.Add(col); dt.Columns.Add(col);
@ -60,7 +60,7 @@ namespace OpenSim.Framework.Data.SQLite
* *
**********************************************************************/ **********************************************************************/
protected static SqliteCommand createInsertCommand(string table, DataTable dt) public static SqliteCommand createInsertCommand(string table, DataTable dt)
{ {
/** /**
* This is subtle enough to deserve some commentary. * This is subtle enough to deserve some commentary.
@ -95,7 +95,7 @@ namespace OpenSim.Framework.Data.SQLite
return cmd; return cmd;
} }
protected static SqliteCommand createUpdateCommand(string table, string pk, DataTable dt) public static SqliteCommand createUpdateCommand(string table, string pk, DataTable dt)
{ {
string sql = "update " + table + " set "; string sql = "update " + table + " set ";
string subsql = String.Empty; string subsql = String.Empty;
@ -123,7 +123,7 @@ namespace OpenSim.Framework.Data.SQLite
} }
protected static string defineTable(DataTable dt) public static string defineTable(DataTable dt)
{ {
string sql = "create table " + dt.TableName + "("; string sql = "create table " + dt.TableName + "(";
string subsql = String.Empty; string subsql = String.Empty;
@ -168,7 +168,7 @@ namespace OpenSim.Framework.Data.SQLite
/// for us. /// for us.
///</summary> ///</summary>
///<returns>a built sqlite parameter</returns> ///<returns>a built sqlite parameter</returns>
protected static SqliteParameter createSqliteParameter(string name, Type type) public static SqliteParameter createSqliteParameter(string name, Type type)
{ {
SqliteParameter param = new SqliteParameter(); SqliteParameter param = new SqliteParameter();
param.ParameterName = ":" + name; param.ParameterName = ":" + name;
@ -184,7 +184,7 @@ namespace OpenSim.Framework.Data.SQLite
* *
**********************************************************************/ **********************************************************************/
protected static DbType dbtypeFromType(Type type) public static DbType dbtypeFromType(Type type)
{ {
if (type == typeof (String)) if (type == typeof (String))
{ {
@ -226,7 +226,7 @@ namespace OpenSim.Framework.Data.SQLite
// this is something we'll need to implement for each db // this is something we'll need to implement for each db
// slightly differently. // slightly differently.
protected static string sqliteType(Type type) public static string sqliteType(Type type)
{ {
if (type == typeof (String)) if (type == typeof (String))
{ {

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using libsecondlife;
namespace OpenSim.Framework.Data
{
public abstract class AssetDataBase : IAssetProvider
{
public abstract AssetBase FetchAsset(LLUUID uuid);
public abstract void CreateAsset(AssetBase asset);
public abstract void UpdateAsset(AssetBase asset);
public abstract bool ExistsAsset(LLUUID uuid);
public abstract void CommitAssets();
public abstract string Version { get; }
public abstract string Name { get; }
public abstract void Initialise();
}
}

View File

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Framework.Data
{
public abstract class DataStoreBase
{
}
}

View File

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Framework.Data
{
public abstract class GridDataBase
{
}
}

View File

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Framework.Data
{
public abstract class InventoryDataBase
{
}
}

View File

@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Framework.Data
{
public abstract class UserDataBase
{
}
}