From f732d5b2c85a7846800e5df7bdca3c807aa46262 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 8 Aug 2007 20:30:38 +0000 Subject: sigh, Data ... not Date. I'm dumb --- .../MonoSqliteDataStore.cs | 213 +++++++++++++++++++++ .../MonoSqliteDateStore.cs | 213 --------------------- 2 files changed, 213 insertions(+), 213 deletions(-) create mode 100644 OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs delete mode 100644 OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDateStore.cs (limited to 'OpenSim') diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs new file mode 100644 index 0000000..fc017d9 --- /dev/null +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs @@ -0,0 +1,213 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using OpenSim.Region.Environment.Scenes; +using OpenSim.Region.Environment.LandManagement; +using OpenSim.Region.Environment; +using OpenSim.Region.Interfaces; +using OpenSim.Framework.Console; +using libsecondlife; + +using System.Data; +// Yes, this won't compile on MS, need to deal with that later +using Mono.Data.SqliteClient; +using Primitive = OpenSim.Region.Environment.Scenes.Primitive; + +namespace OpenSim.DataStore.MonoSqliteStorage +{ + + public class MonoSqliteDataStore : IRegionDataStore + { + private const string primSelect = "select * from prims"; + private const string shapeSelect = "select * from primshapes"; + + private DataSet ds; + private SqliteDataAdapter primDa; + private SqliteDataAdapter shapeDa; + + public void Initialise(string dbfile, string dbname) + { + // for us, dbfile will be the connect string + MainLog.Instance.Verbose("DATASTORE", "Sqlite - connecting: " + dbfile); + SqliteConnection conn = new SqliteConnection(dbfile); + + SqliteCommand primSelectCmd = new SqliteCommand(primSelect, conn); + primDa = new SqliteDataAdapter(primSelectCmd); + // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa); + + SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, conn); + shapeDa = new SqliteDataAdapter(shapeSelectCmd); + // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); + + ds = new DataSet(); + + // We fill the data set, now we've got copies in memory for the information + // TODO: see if the linkage actually holds. + // primDa.FillSchema(ds, SchemaType.Source, "PrimSchema"); + primDa.Fill(ds, "prims"); + ds.AcceptChanges(); + + DataTable prims = ds.Tables["prims"]; + prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] }; + setupPrimCommands(primDa, conn); + + // shapeDa.FillSchema(ds, SchemaType.Source, "ShapeSchema"); + shapeDa.Fill(ds, "primshapes"); + + return; + } + + private SqliteParameter createSqliteParameter(string name, DbType type) + { + SqliteParameter param = new SqliteParameter(); + param.ParameterName = ":" + name; + param.DbType = type; + param.SourceColumn = name; + param.SourceVersion = DataRowVersion.Current; + return param; + } + + private void setupPrimCommands(SqliteDataAdapter da, SqliteConnection conn) + { + SqliteParameter UUID = createSqliteParameter("UUID", DbType.String); + SqliteParameter Name = createSqliteParameter("Name", DbType.String); + SqliteParameter CreationDate = createSqliteParameter("CreationDate", DbType.Int32); + SqliteParameter PositionX = createSqliteParameter("PositionX", DbType.Double); + SqliteParameter PositionY = createSqliteParameter("PositionY", DbType.Double); + SqliteParameter PositionZ = createSqliteParameter("PositionZ", DbType.Double); + + + SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); + delete.Connection = conn; + + SqliteCommand insert = + new SqliteCommand("insert into prims(" + + "UUID, CreationDate, Name, PositionX, PositionY, PositionZ" + + ") values(:UUID, :CreationDate, :Name, :PositionX, :PositionY, :PositionZ)"); + insert.Connection = conn; + + SqliteCommand update = + new SqliteCommand("update prims set " + + "UUID = :UUID, CreationDate = :CreationDate, Name = :Name, PositionX = :PositionX, " + + "PositionY = :PositionY, PositionZ = :PositionZ where UUID = :UUID"); + update.Connection = conn; + + delete.Parameters.Add(UUID); + + insert.Parameters.Add(UUID); + insert.Parameters.Add(Name); + insert.Parameters.Add(CreationDate); + insert.Parameters.Add(PositionX); + insert.Parameters.Add(PositionY); + insert.Parameters.Add(PositionZ); + + update.Parameters.Add(UUID); + update.Parameters.Add(Name); + update.Parameters.Add(CreationDate); + update.Parameters.Add(PositionX); + update.Parameters.Add(PositionY); + update.Parameters.Add(PositionZ); + + da.DeleteCommand = delete; + da.InsertCommand = insert; + da.UpdateCommand = update; + } + + private void StoreSceneObject(SceneObject obj) + { + + } + + public void StoreObject(AllNewSceneObjectPart2 obj) + { + // TODO: Serializing code + DataTable prims = ds.Tables["prims"]; + DataTable shapes = ds.Tables["shapes"]; + + + + } + + private void fillPrimRow(DataRow row, Primitive prim) + { + row["UUID"] = prim.UUID; + row["CreationDate"] = prim.CreationDate; + row["Name"] = prim.Name; + row["PositionX"] = prim.Pos.X; + row["PositionY"] = prim.Pos.Y; + row["PositionZ"] = prim.Pos.Z; + } + + private void addPrim(Primitive prim) + { + DataTable prims = ds.Tables["prims"]; + DataTable shapes = ds.Tables["shapes"]; + + DataRow row = prims.Rows.Find(prim.UUID); + if (row == null) { + row = prims.NewRow(); + fillPrimRow(row, prim); + prims.Rows.Add(row); + } else { + fillPrimRow(row, prim); + } + } + + public void StoreObject(SceneObject obj) + { + foreach (Primitive prim in obj.Children.Values) + { + addPrim(prim); + } + + MainLog.Instance.Verbose("Attempting to do update...."); + primDa.Update(ds, "prims"); + MainLog.Instance.Verbose("Dump of prims:", ds.GetXml()); + } + + public void RemoveObject(LLUUID obj) + { + // TODO: remove code + } + + public List LoadObjects() + { + List retvals = new List(); + + MainLog.Instance.Verbose("DATASTORE", "Sqlite - LoadObjects found " + " objects"); + + return retvals; + } + + public void StoreTerrain(double[,] ter) + { + + } + + public double[,] LoadTerrain() + { + return null; + } + + public void RemoveLandObject(uint id) + { + + } + + public void StoreParcel(Land parcel) + { + + } + + public List LoadLandObjects() + { + return new List(); + } + + public void Shutdown() + { + // TODO: DataSet commit + } + } +} diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDateStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDateStore.cs deleted file mode 100644 index fc017d9..0000000 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDateStore.cs +++ /dev/null @@ -1,213 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -using OpenSim.Region.Environment.Scenes; -using OpenSim.Region.Environment.LandManagement; -using OpenSim.Region.Environment; -using OpenSim.Region.Interfaces; -using OpenSim.Framework.Console; -using libsecondlife; - -using System.Data; -// Yes, this won't compile on MS, need to deal with that later -using Mono.Data.SqliteClient; -using Primitive = OpenSim.Region.Environment.Scenes.Primitive; - -namespace OpenSim.DataStore.MonoSqliteStorage -{ - - public class MonoSqliteDataStore : IRegionDataStore - { - private const string primSelect = "select * from prims"; - private const string shapeSelect = "select * from primshapes"; - - private DataSet ds; - private SqliteDataAdapter primDa; - private SqliteDataAdapter shapeDa; - - public void Initialise(string dbfile, string dbname) - { - // for us, dbfile will be the connect string - MainLog.Instance.Verbose("DATASTORE", "Sqlite - connecting: " + dbfile); - SqliteConnection conn = new SqliteConnection(dbfile); - - SqliteCommand primSelectCmd = new SqliteCommand(primSelect, conn); - primDa = new SqliteDataAdapter(primSelectCmd); - // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa); - - SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, conn); - shapeDa = new SqliteDataAdapter(shapeSelectCmd); - // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); - - ds = new DataSet(); - - // We fill the data set, now we've got copies in memory for the information - // TODO: see if the linkage actually holds. - // primDa.FillSchema(ds, SchemaType.Source, "PrimSchema"); - primDa.Fill(ds, "prims"); - ds.AcceptChanges(); - - DataTable prims = ds.Tables["prims"]; - prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] }; - setupPrimCommands(primDa, conn); - - // shapeDa.FillSchema(ds, SchemaType.Source, "ShapeSchema"); - shapeDa.Fill(ds, "primshapes"); - - return; - } - - private SqliteParameter createSqliteParameter(string name, DbType type) - { - SqliteParameter param = new SqliteParameter(); - param.ParameterName = ":" + name; - param.DbType = type; - param.SourceColumn = name; - param.SourceVersion = DataRowVersion.Current; - return param; - } - - private void setupPrimCommands(SqliteDataAdapter da, SqliteConnection conn) - { - SqliteParameter UUID = createSqliteParameter("UUID", DbType.String); - SqliteParameter Name = createSqliteParameter("Name", DbType.String); - SqliteParameter CreationDate = createSqliteParameter("CreationDate", DbType.Int32); - SqliteParameter PositionX = createSqliteParameter("PositionX", DbType.Double); - SqliteParameter PositionY = createSqliteParameter("PositionY", DbType.Double); - SqliteParameter PositionZ = createSqliteParameter("PositionZ", DbType.Double); - - - SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); - delete.Connection = conn; - - SqliteCommand insert = - new SqliteCommand("insert into prims(" + - "UUID, CreationDate, Name, PositionX, PositionY, PositionZ" + - ") values(:UUID, :CreationDate, :Name, :PositionX, :PositionY, :PositionZ)"); - insert.Connection = conn; - - SqliteCommand update = - new SqliteCommand("update prims set " + - "UUID = :UUID, CreationDate = :CreationDate, Name = :Name, PositionX = :PositionX, " + - "PositionY = :PositionY, PositionZ = :PositionZ where UUID = :UUID"); - update.Connection = conn; - - delete.Parameters.Add(UUID); - - insert.Parameters.Add(UUID); - insert.Parameters.Add(Name); - insert.Parameters.Add(CreationDate); - insert.Parameters.Add(PositionX); - insert.Parameters.Add(PositionY); - insert.Parameters.Add(PositionZ); - - update.Parameters.Add(UUID); - update.Parameters.Add(Name); - update.Parameters.Add(CreationDate); - update.Parameters.Add(PositionX); - update.Parameters.Add(PositionY); - update.Parameters.Add(PositionZ); - - da.DeleteCommand = delete; - da.InsertCommand = insert; - da.UpdateCommand = update; - } - - private void StoreSceneObject(SceneObject obj) - { - - } - - public void StoreObject(AllNewSceneObjectPart2 obj) - { - // TODO: Serializing code - DataTable prims = ds.Tables["prims"]; - DataTable shapes = ds.Tables["shapes"]; - - - - } - - private void fillPrimRow(DataRow row, Primitive prim) - { - row["UUID"] = prim.UUID; - row["CreationDate"] = prim.CreationDate; - row["Name"] = prim.Name; - row["PositionX"] = prim.Pos.X; - row["PositionY"] = prim.Pos.Y; - row["PositionZ"] = prim.Pos.Z; - } - - private void addPrim(Primitive prim) - { - DataTable prims = ds.Tables["prims"]; - DataTable shapes = ds.Tables["shapes"]; - - DataRow row = prims.Rows.Find(prim.UUID); - if (row == null) { - row = prims.NewRow(); - fillPrimRow(row, prim); - prims.Rows.Add(row); - } else { - fillPrimRow(row, prim); - } - } - - public void StoreObject(SceneObject obj) - { - foreach (Primitive prim in obj.Children.Values) - { - addPrim(prim); - } - - MainLog.Instance.Verbose("Attempting to do update...."); - primDa.Update(ds, "prims"); - MainLog.Instance.Verbose("Dump of prims:", ds.GetXml()); - } - - public void RemoveObject(LLUUID obj) - { - // TODO: remove code - } - - public List LoadObjects() - { - List retvals = new List(); - - MainLog.Instance.Verbose("DATASTORE", "Sqlite - LoadObjects found " + " objects"); - - return retvals; - } - - public void StoreTerrain(double[,] ter) - { - - } - - public double[,] LoadTerrain() - { - return null; - } - - public void RemoveLandObject(uint id) - { - - } - - public void StoreParcel(Land parcel) - { - - } - - public List LoadLandObjects() - { - return new List(); - } - - public void Shutdown() - { - // TODO: DataSet commit - } - } -} -- cgit v1.1