From e7e9e6706edd2b4946f05bc66d9a23c54320c16c Mon Sep 17 00:00:00 2001 From: Melanie Date: Tue, 7 Sep 2010 21:05:10 +0100 Subject: [PATCH] Restore some code to create estate mapping --- OpenSim/Data/MySQL/MySQLEstateData.cs | 64 +++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index ae7b83a5a3..f1753468a1 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs @@ -123,6 +123,8 @@ namespace OpenSim.Data.MySQL public EstateSettings LoadEstateSettings(UUID regionID) { + bool create = true; + EstateSettings es = new EstateSettings(); es.OnSave += StoreEstateSettings; @@ -142,6 +144,8 @@ namespace OpenSim.Data.MySQL { if (r.Read()) { + create = false; + foreach (string name in FieldList) { if (m_FieldMap[name].GetValue(es) is bool) @@ -167,6 +171,66 @@ namespace OpenSim.Data.MySQL } } } + + if (create) + { + // Migration case + List names = new List(FieldList); + + names.Remove("EstateID"); + + sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")"; + + using (MySqlCommand cmd = dbcon.CreateCommand()) + { + cmd.CommandText = sql; + cmd.Parameters.Clear(); + + foreach (string name in FieldList) + { + if (m_FieldMap[name].GetValue(es) is bool) + { + if ((bool)m_FieldMap[name].GetValue(es)) + cmd.Parameters.AddWithValue("?" + name, "1"); + else + cmd.Parameters.AddWithValue("?" + name, "0"); + } + else + { + cmd.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString()); + } + } + + cmd.ExecuteNonQuery(); + + cmd.CommandText = "select LAST_INSERT_ID() as id"; + cmd.Parameters.Clear(); + + using (IDataReader r = cmd.ExecuteReader()) + { + r.Read(); + es.EstateID = Convert.ToUInt32(r["id"]); + } + + cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; + cmd.Parameters.AddWithValue("?RegionID", regionID.ToString()); + cmd.Parameters.AddWithValue("?EstateID", es.EstateID.ToString()); + + // This will throw on dupe key + try { cmd.ExecuteNonQuery(); } + catch (Exception) { } + + // Munge and transfer the ban list + cmd.Parameters.Clear(); + cmd.CommandText = "insert into estateban select " + es.EstateID.ToString() + ", bannedUUID, bannedIp, bannedIpHostMask, '' from regionban where regionban.regionUUID = ?UUID"; + cmd.Parameters.AddWithValue("?UUID", regionID.ToString()); + + try { cmd.ExecuteNonQuery(); } + catch (Exception) { } + + es.Save(); + } + } } LoadBanList(es);