diff --git a/OpenSim/Data/MySQL/MySQLManager.cs b/OpenSim/Data/MySQL/MySQLManager.cs index f7baadc964..7e1b40509f 100644 --- a/OpenSim/Data/MySQL/MySQLManager.cs +++ b/OpenSim/Data/MySQL/MySQLManager.cs @@ -530,6 +530,44 @@ namespace OpenSim.Data.MySQL return retval; } + 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"]); + return appearance; + } + + /// /// Inserts a new row into the log database /// @@ -946,5 +984,76 @@ namespace OpenSim.Data.MySQL return returnval; } + + public bool insertAppearanceRow(AvatarAppearance appearance) + { + string sql = String.Empty; + sql += "REPLACE INTO "; + sql += "avatarappearance (owner, serial, visual_params, texture, avatar_height, "; + sql += "body_item, body_asset, skin_item, skin_asset, hair_item, hair_asset, eyes_item, eyes_asset, "; + sql += "shirt_item, shirt_asset, pants_item, pants_asset, shoes_item, shoes_asset, socks_item, socks_asset, "; + sql += "jacket_item, jacket_asset, gloves_item, gloves_asset, undershirt_item, undershirt_asset, underpants_item, underpants_asset, "; + sql += "skirt_item, skirt_asset) values ("; + sql += "?owner, ?serial, ?visual_params, ?texture, ?avatar_height, "; + sql += "?body_item, ?body_asset, ?skin_item, ?skin_asset, ?hair_item, ?hair_asset, ?eyes_item, ?eyes_asset, "; + sql += "?shirt_item, ?shirt_asset, ?pants_item, ?pants_asset, ?shoes_item, ?shoes_asset, ?socks_item, ?socks_asset, "; + sql += "?jacket_item, ?jacket_asset, ?gloves_item, ?gloves_asset, ?undershirt_item, ?undershirt_asset, ?underpants_item, ?underpants_asset, "; + sql += "?skirt_item, ?skirt_asset)"; + + bool returnval = false; + + // we want to send in byte data, which means we can't just pass down strings + try { + 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("?visual_params", appearance.VisualParams); + cmd.Parameters.AddWithValue("?texture", appearance.Texture.ToBytes()); + cmd.Parameters.AddWithValue("?avatar_height", appearance.AvatarHeight.ToString()); + cmd.Parameters.AddWithValue("?body_item", appearance.BodyItem.ToString()); + cmd.Parameters.AddWithValue("?body_asset", appearance.BodyAsset.ToString()); + cmd.Parameters.AddWithValue("?skin_item", appearance.SkinItem.ToString()); + cmd.Parameters.AddWithValue("?skin_asset", appearance.SkinAsset.ToString()); + cmd.Parameters.AddWithValue("?hair_item", appearance.HairItem.ToString()); + cmd.Parameters.AddWithValue("?hair_asset", appearance.HairAsset.ToString()); + cmd.Parameters.AddWithValue("?eyes_item", appearance.EyesItem.ToString()); + cmd.Parameters.AddWithValue("?eyes_asset", appearance.EyesAsset.ToString()); + cmd.Parameters.AddWithValue("?shirt_item", appearance.ShirtItem.ToString()); + cmd.Parameters.AddWithValue("?shirt_asset", appearance.ShirtAsset.ToString()); + cmd.Parameters.AddWithValue("?pants_item", appearance.PantsItem.ToString()); + cmd.Parameters.AddWithValue("?pants_asset", appearance.PantsAsset.ToString()); + cmd.Parameters.AddWithValue("?shoes_item", appearance.ShoesItem.ToString()); + cmd.Parameters.AddWithValue("?shoes_asset", appearance.ShoesAsset.ToString()); + cmd.Parameters.AddWithValue("?socks_item", appearance.SocksItem.ToString()); + cmd.Parameters.AddWithValue("?socks_asset", appearance.SocksAsset.ToString()); + cmd.Parameters.AddWithValue("?jacket_item", appearance.JacketItem.ToString()); + cmd.Parameters.AddWithValue("?jacket_asset", appearance.JacketAsset.ToString()); + cmd.Parameters.AddWithValue("?gloves_item", appearance.GlovesItem.ToString()); + cmd.Parameters.AddWithValue("?gloves_asset", appearance.GlovesAsset.ToString()); + cmd.Parameters.AddWithValue("?undershirt_item", appearance.UnderShirtItem.ToString()); + cmd.Parameters.AddWithValue("?undershirt_asset", appearance.UnderShirtAsset.ToString()); + cmd.Parameters.AddWithValue("?underpants_item", appearance.UnderPantsItem.ToString()); + 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) + { + returnval = true; + } + cmd.Dispose(); + } + catch (Exception e) + { + m_log.Error(e.ToString()); + return false; + } + + return returnval; + + } + } }