From 53bcf2139e7c8c9da2fbbcafc45704eae3bc5daa Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 21 May 2008 18:02:09 +0000 Subject: this removes use of the mapper for wearables, and I can confirm things get saved to the database. There are still issues on wearing things after a cleared cache that I'm looking at now. --- OpenSim/Data/MySQL/MySQLManager.cs | 86 ++++++++++++---------- OpenSim/Data/MySQL/MySQLUserData.cs | 48 +++++++----- .../MySQL/Resources/CreateAvatarAppearance.sql | 63 ++++++++-------- 3 files changed, 109 insertions(+), 88 deletions(-) (limited to 'OpenSim/Data/MySQL') diff --git a/OpenSim/Data/MySQL/MySQLManager.cs b/OpenSim/Data/MySQL/MySQLManager.cs index 7e1b405..4b11739 100644 --- a/OpenSim/Data/MySQL/MySQLManager.cs +++ b/OpenSim/Data/MySQL/MySQLManager.cs @@ -191,6 +191,12 @@ namespace OpenSim.Data.MySQL cmd.ExecuteNonQuery(); } + public void ExecuteSql(string sql) + { + MySqlCommand cmd = new MySqlCommand(sql, dbcon); + cmd.ExecuteNonQuery(); + } + /// /// Given a list of tables, return the version of the tables, as seen in the database /// @@ -532,38 +538,42 @@ namespace OpenSim.Data.MySQL public AvatarAppearance readAppearanceRow(IDataReader reader) { - AvatarAppearance appearance = new AvatarAppearance(); - appearance.Owner = new LLUUID((string)reader["owner"]); - appearance.Serial = Convert.ToInt32(reader["serial"]); - appearance.VisualParams = (byte[])reader["visual_params"]; - appearance.Texture = new LLObject.TextureEntry((byte[])reader["texture"], 0, ((byte[])reader["texture"]).Length); - appearance.AvatarHeight = (float)Convert.ToDouble(reader["avatar_height"]); - appearance.BodyItem = new LLUUID((string)reader["body_item"]); - appearance.BodyAsset = new LLUUID((string)reader["body_asset"]); - appearance.SkinItem = new LLUUID((string)reader["skin_item"]); - appearance.SkinAsset = new LLUUID((string)reader["skin_asset"]); - appearance.HairItem = new LLUUID((string)reader["hair_item"]); - appearance.HairAsset = new LLUUID((string)reader["hair_asset"]); - appearance.EyesItem = new LLUUID((string)reader["eyes_item"]); - appearance.EyesAsset = new LLUUID((string)reader["eyes_asset"]); - appearance.ShirtItem = new LLUUID((string)reader["shirt_item"]); - appearance.ShirtAsset = new LLUUID((string)reader["shirt_asset"]); - appearance.PantsItem = new LLUUID((string)reader["pants_item"]); - appearance.PantsAsset = new LLUUID((string)reader["pants_asset"]); - appearance.ShoesItem = new LLUUID((string)reader["shoes_item"]); - appearance.ShoesAsset = new LLUUID((string)reader["shoes_asset"]); - appearance.SocksItem = new LLUUID((string)reader["socks_item"]); - appearance.SocksAsset = new LLUUID((string)reader["socks_asset"]); - appearance.JacketItem = new LLUUID((string)reader["jacket_item"]); - appearance.JacketAsset = new LLUUID((string)reader["jacket_asset"]); - appearance.GlovesItem = new LLUUID((string)reader["gloves_item"]); - appearance.GlovesAsset = new LLUUID((string)reader["gloves_asset"]); - appearance.UnderShirtItem = new LLUUID((string)reader["undershirt_item"]); - appearance.UnderShirtAsset = new LLUUID((string)reader["undershirt_asset"]); - appearance.UnderPantsItem = new LLUUID((string)reader["underpants_item"]); - appearance.UnderPantsAsset = new LLUUID((string)reader["underpants_asset"]); - appearance.SkirtItem = new LLUUID((string)reader["skirt_item"]); - appearance.SkirtAsset = new LLUUID((string)reader["skirt_asset"]); + AvatarAppearance appearance = null; + if (reader.Read()) + { + appearance = new AvatarAppearance(); + appearance.Owner = new LLUUID((string)reader["owner"]); + appearance.Serial = Convert.ToInt32(reader["serial"]); + appearance.VisualParams = (byte[])reader["visual_params"]; + appearance.Texture = new LLObject.TextureEntry((byte[])reader["texture"], 0, ((byte[])reader["texture"]).Length); + appearance.AvatarHeight = (float)Convert.ToDouble(reader["avatar_height"]); + appearance.BodyItem = new LLUUID((string)reader["body_item"]); + appearance.BodyAsset = new LLUUID((string)reader["body_asset"]); + appearance.SkinItem = new LLUUID((string)reader["skin_item"]); + appearance.SkinAsset = new LLUUID((string)reader["skin_asset"]); + appearance.HairItem = new LLUUID((string)reader["hair_item"]); + appearance.HairAsset = new LLUUID((string)reader["hair_asset"]); + appearance.EyesItem = new LLUUID((string)reader["eyes_item"]); + appearance.EyesAsset = new LLUUID((string)reader["eyes_asset"]); + appearance.ShirtItem = new LLUUID((string)reader["shirt_item"]); + appearance.ShirtAsset = new LLUUID((string)reader["shirt_asset"]); + appearance.PantsItem = new LLUUID((string)reader["pants_item"]); + appearance.PantsAsset = new LLUUID((string)reader["pants_asset"]); + appearance.ShoesItem = new LLUUID((string)reader["shoes_item"]); + appearance.ShoesAsset = new LLUUID((string)reader["shoes_asset"]); + appearance.SocksItem = new LLUUID((string)reader["socks_item"]); + appearance.SocksAsset = new LLUUID((string)reader["socks_asset"]); + appearance.JacketItem = new LLUUID((string)reader["jacket_item"]); + appearance.JacketAsset = new LLUUID((string)reader["jacket_asset"]); + appearance.GlovesItem = new LLUUID((string)reader["gloves_item"]); + appearance.GlovesAsset = new LLUUID((string)reader["gloves_asset"]); + appearance.UnderShirtItem = new LLUUID((string)reader["undershirt_item"]); + appearance.UnderShirtAsset = new LLUUID((string)reader["undershirt_asset"]); + appearance.UnderPantsItem = new LLUUID((string)reader["underpants_item"]); + appearance.UnderPantsAsset = new LLUUID((string)reader["underpants_asset"]); + appearance.SkirtItem = new LLUUID((string)reader["skirt_item"]); + appearance.SkirtAsset = new LLUUID((string)reader["skirt_asset"]); + } return appearance; } @@ -1007,10 +1017,10 @@ namespace OpenSim.Data.MySQL MySqlCommand cmd = (MySqlCommand) dbcon.CreateCommand(); cmd.CommandText = sql; cmd.Parameters.AddWithValue("?owner", appearance.Owner.ToString()); - cmd.Parameters.AddWithValue("?serial", appearance.Serial.ToString()); + cmd.Parameters.AddWithValue("?serial", appearance.Serial); cmd.Parameters.AddWithValue("?visual_params", appearance.VisualParams); cmd.Parameters.AddWithValue("?texture", appearance.Texture.ToBytes()); - cmd.Parameters.AddWithValue("?avatar_height", appearance.AvatarHeight.ToString()); + cmd.Parameters.AddWithValue("?avatar_height", appearance.AvatarHeight); cmd.Parameters.AddWithValue("?body_item", appearance.BodyItem.ToString()); cmd.Parameters.AddWithValue("?body_asset", appearance.BodyAsset.ToString()); cmd.Parameters.AddWithValue("?skin_item", appearance.SkinItem.ToString()); @@ -1037,12 +1047,10 @@ namespace OpenSim.Data.MySQL cmd.Parameters.AddWithValue("?underpants_asset", appearance.UnderPantsAsset.ToString()); cmd.Parameters.AddWithValue("?skirt_item", appearance.SkirtItem.ToString()); cmd.Parameters.AddWithValue("?skirt_asset", appearance.SkirtAsset.ToString()); - - int x; - if ((x = cmd.ExecuteNonQuery()) > 0) - { + + if (cmd.ExecuteNonQuery() > 0) returnval = true; - } + cmd.Dispose(); } catch (Exception e) diff --git a/OpenSim/Data/MySQL/MySQLUserData.cs b/OpenSim/Data/MySQL/MySQLUserData.cs index 56bdcbf..35bcb1d 100644 --- a/OpenSim/Data/MySQL/MySQLUserData.cs +++ b/OpenSim/Data/MySQL/MySQLUserData.cs @@ -34,8 +34,6 @@ using libsecondlife; using log4net; using OpenSim.Framework; using OpenSim.Data.Base; -using OpenSim.Data.MapperFactory; -using OpenSim.Data.MySQLMapper; namespace OpenSim.Data.MySQL { @@ -56,8 +54,6 @@ namespace OpenSim.Data.MySQL private string m_userFriendsTableName; private string m_appearanceTableName = "avatarappearance"; private string m_connectString; - private BaseDatabaseConnector m_databaseMapper; - private AppearanceTableMapper m_appearanceMapper; /// /// Loads and initialises the MySQL storage plugin @@ -107,15 +103,6 @@ namespace OpenSim.Data.MySQL database = new MySQLManager(m_connectString); } - string mapperTypeStr = "MySQL"; - DataMapperFactory.MAPPER_TYPE mapperType = - (DataMapperFactory.MAPPER_TYPE) - Enum.Parse(typeof (DataMapperFactory.MAPPER_TYPE), mapperTypeStr); - - m_databaseMapper = DataMapperFactory.GetDataBaseMapper(mapperType, m_connectString); - - m_appearanceMapper = new AppearanceTableMapper(m_databaseMapper, "AvatarAppearance"); - TestTables(); } @@ -203,6 +190,12 @@ namespace OpenSim.Data.MySQL { database.ExecuteResourceSql("CreateAvatarAppearance.sql"); return; + } + else if (oldVersion.Contains("Rev.1")) + { + database.ExecuteSql("drop table avatarappearance"); + database.ExecuteResourceSql("CreateAvatarAppearance.sql"); + return; } } @@ -676,18 +669,35 @@ namespace OpenSim.Data.MySQL // override override public AvatarAppearance GetUserAppearance(LLUUID user) { - AvatarAppearance appearance = null; - if (!m_appearanceMapper.TryGetValue(user.UUID, out appearance)) + try { + lock (database) + { + Dictionary param = new Dictionary(); + param["?owner"] = user.ToString(); + + IDbCommand result = database.Query("SELECT * FROM " + m_appearanceTableName + " WHERE owner = ?owner", param); + IDataReader reader = result.ExecuteReader(); + + AvatarAppearance appearance = database.readAppearanceRow(reader); + + reader.Close(); + result.Dispose(); + + return appearance; + } + } + catch (Exception e) { - appearance = null; + database.Reconnect(); + m_log.Error(e.ToString()); + return null; } - return appearance; } - // override override public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance) { - m_appearanceMapper.Update(user.UUID, appearance); + appearance.Owner = user; + database.insertAppearanceRow(appearance); } override public void AddAttachment(LLUUID user, LLUUID item) diff --git a/OpenSim/Data/MySQL/Resources/CreateAvatarAppearance.sql b/OpenSim/Data/MySQL/Resources/CreateAvatarAppearance.sql index 0deb099..475c933 100644 --- a/OpenSim/Data/MySQL/Resources/CreateAvatarAppearance.sql +++ b/OpenSim/Data/MySQL/Resources/CreateAvatarAppearance.sql @@ -4,36 +4,39 @@ DROP TABLE IF EXISTS `avatarappearance`; CREATE TABLE `avatarappearance` ( - `UUID` char(36) NOT NULL, - `Serial` int(10) unsigned NOT NULL, - `WearableItem0` char(36) NOT NULL, - `WearableAsset0` char(36) NOT NULL, - `WearableItem1` char(36) NOT NULL, - `WearableAsset1` char(36) NOT NULL, - `WearableItem2` char(36) NOT NULL, - `WearableAsset2` char(36) NOT NULL, - `WearableItem3` char(36) NOT NULL, - `WearableAsset3` char(36) NOT NULL, - `WearableItem4` char(36) NOT NULL, - `WearableAsset4` char(36) NOT NULL, - `WearableItem5` char(36) NOT NULL, - `WearableAsset5` char(36) NOT NULL, - `WearableItem6` char(36) NOT NULL, - `WearableAsset6` char(36) NOT NULL, - `WearableItem7` char(36) NOT NULL, - `WearableAsset7` char(36) NOT NULL, - `WearableItem8` char(36) NOT NULL, - `WearableAsset8` char(36) NOT NULL, - `WearableItem9` char(36) NOT NULL, - `WearableAsset9` char(36) NOT NULL, - `WearableItem10` char(36) NOT NULL, - `WearableAsset10` char(36) NOT NULL, - `WearableItem11` char(36) NOT NULL, - `WearableAsset11` char(36) NOT NULL, - `WearableItem12` char(36) NOT NULL, - `WearableAsset12` char(36) NOT NULL, + Owner char(36) NOT NULL, + Serial int(10) unsigned NOT NULL, + Visual_Params blob NOT NULL, + Texture blob NOT NULL, + Avatar_Height float NOT NULL, + Body_Item char(36) NOT NULL, + Body_Asset char(36) NOT NULL, + Skin_Item char(36) NOT NULL, + Skin_Asset char(36) NOT NULL, + Hair_Item char(36) NOT NULL, + Hair_Asset char(36) NOT NULL, + Eyes_Item char(36) NOT NULL, + Eyes_Asset char(36) NOT NULL, + Shirt_Item char(36) NOT NULL, + Shirt_Asset char(36) NOT NULL, + Pants_Item char(36) NOT NULL, + Pants_Asset char(36) NOT NULL, + Shoes_Item char(36) NOT NULL, + Shoes_Asset char(36) NOT NULL, + Socks_Item char(36) NOT NULL, + Socks_Asset char(36) NOT NULL, + Jacket_Item char(36) NOT NULL, + Jacket_Asset char(36) NOT NULL, + Gloves_Item char(36) NOT NULL, + Gloves_Asset char(36) NOT NULL, + Undershirt_Item char(36) NOT NULL, + Undershirt_Asset char(36) NOT NULL, + Underpants_Item char(36) NOT NULL, + Underpants_Asset char(36) NOT NULL, + Skirt_Item char(36) NOT NULL, + Skirt_Asset char(36) NOT NULL, - PRIMARY KEY (`UUID`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Rev.1'; + PRIMARY KEY (`Owner`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Rev.2'; -- cgit v1.1