From 70b0e07d1ea99f8bd88f2be12bf9b53a39187f60 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 22 Mar 2010 18:49:56 +0000
Subject: Remove the reading of estate_settings.xml and the associated
processing of defaults. Adding code to facilitate estate creation /
managemment as part of first time start up
---
OpenSim/Data/MSSQL/MSSQLEstateData.cs | 23 ++---------------------
OpenSim/Data/MySQL/MySQLEstateData.cs | 18 +++++-------------
OpenSim/Data/SQLite/SQLiteEstateData.cs | 20 ++------------------
OpenSim/Data/Tests/BasicEstateTest.cs | 24 ++++++++++++------------
4 files changed, 21 insertions(+), 64 deletions(-)
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs
index 6f6f076..1624f56 100644
--- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs
@@ -83,7 +83,7 @@ namespace OpenSim.Data.MSSQL
///
/// region ID.
///
- public EstateSettings LoadEstateSettings(UUID regionID)
+ public EstateSettings LoadEstateSettings(UUID regionID, bool create)
{
EstateSettings es = new EstateSettings();
@@ -127,7 +127,7 @@ namespace OpenSim.Data.MSSQL
}
- if (insertEstate)
+ if (insertEstate && create)
{
List names = new List(FieldList);
@@ -173,25 +173,6 @@ namespace OpenSim.Data.MSSQL
}
}
- // Munge and transfer the ban list
-
- sql = string.Format("insert into estateban select {0}, bannedUUID, bannedIp, bannedIpHostMask, '' from regionban where regionban.regionUUID = @UUID", es.EstateID);
- using (SqlConnection conn = new SqlConnection(m_connectionString))
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
-
- cmd.Parameters.Add(_Database.CreateParameter("@UUID", regionID));
- try
- {
- conn.Open();
- cmd.ExecuteNonQuery();
- }
- catch (Exception)
- {
- _Log.Debug("[ESTATE DB]: Error setting up estateban from regionban");
- }
- }
-
//TODO check if this is needed??
es.Save();
}
diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs
index 2eae2d8..e94dcda 100644
--- a/OpenSim/Data/MySQL/MySQLEstateData.cs
+++ b/OpenSim/Data/MySQL/MySQLEstateData.cs
@@ -121,7 +121,7 @@ namespace OpenSim.Data.MySQL
}
}
- public EstateSettings LoadEstateSettings(UUID regionID)
+ public EstateSettings LoadEstateSettings(UUID regionID, bool create)
{
EstateSettings es = new EstateSettings();
es.OnSave += StoreEstateSettings;
@@ -129,12 +129,12 @@ namespace OpenSim.Data.MySQL
string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) +
" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = ?RegionID";
- bool migration = true;
-
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
{
dbcon.Open();
+ bool found = false;
+
using (MySqlCommand cmd = dbcon.CreateCommand())
{
cmd.CommandText = sql;
@@ -144,7 +144,7 @@ namespace OpenSim.Data.MySQL
{
if (r.Read())
{
- migration = false;
+ found = true;
foreach (string name in FieldList)
{
@@ -172,7 +172,7 @@ namespace OpenSim.Data.MySQL
}
}
- if (migration)
+ if (!found && create)
{
// Migration case
List names = new List(FieldList);
@@ -220,14 +220,6 @@ namespace OpenSim.Data.MySQL
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();
}
}
diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs
index 1be99ee..4a447d2 100644
--- a/OpenSim/Data/SQLite/SQLiteEstateData.cs
+++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs
@@ -80,7 +80,7 @@ namespace OpenSim.Data.SQLite
get { return new List(m_FieldMap.Keys).ToArray(); }
}
- public EstateSettings LoadEstateSettings(UUID regionID)
+ public EstateSettings LoadEstateSettings(UUID regionID, bool create)
{
EstateSettings es = new EstateSettings();
es.OnSave += StoreEstateSettings;
@@ -120,10 +120,8 @@ namespace OpenSim.Data.SQLite
}
r.Close();
}
- else
+ else if (create)
{
- // Migration case
- //
r.Close();
List names = new List(FieldList);
@@ -176,20 +174,6 @@ namespace OpenSim.Data.SQLite
{
}
- // 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.Add(":UUID", regionID.ToString());
-
- try
- {
- cmd.ExecuteNonQuery();
- }
- catch (Exception)
- {
- }
-
es.Save();
}
diff --git a/OpenSim/Data/Tests/BasicEstateTest.cs b/OpenSim/Data/Tests/BasicEstateTest.cs
index 907bb38..d14d405 100644
--- a/OpenSim/Data/Tests/BasicEstateTest.cs
+++ b/OpenSim/Data/Tests/BasicEstateTest.cs
@@ -158,7 +158,7 @@ namespace OpenSim.Data.Tests
public void T012_EstateSettingsRandomStorage()
{
// Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
new PropertyScrambler()
.DontScramble(x=>x.EstateID)
.Scramble(originalSettings);
@@ -167,7 +167,7 @@ namespace OpenSim.Data.Tests
db.StoreEstateSettings(originalSettings);
// Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
// Checking that loaded values are correct.
Assert.That(loadedSettings, Constraints.PropertyCompareConstraint(originalSettings));
@@ -177,7 +177,7 @@ namespace OpenSim.Data.Tests
public void T020_EstateSettingsManagerList()
{
// Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
originalSettings.EstateManagers = new UUID[] { MANAGER_ID_1, MANAGER_ID_2 };
@@ -185,7 +185,7 @@ namespace OpenSim.Data.Tests
db.StoreEstateSettings(originalSettings);
// Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
Assert.AreEqual(2, loadedSettings.EstateManagers.Length);
Assert.AreEqual(MANAGER_ID_1, loadedSettings.EstateManagers[0]);
@@ -196,7 +196,7 @@ namespace OpenSim.Data.Tests
public void T021_EstateSettingsUserList()
{
// Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
originalSettings.EstateAccess = new UUID[] { USER_ID_1, USER_ID_2 };
@@ -204,7 +204,7 @@ namespace OpenSim.Data.Tests
db.StoreEstateSettings(originalSettings);
// Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
Assert.AreEqual(2, loadedSettings.EstateAccess.Length);
Assert.AreEqual(USER_ID_1, loadedSettings.EstateAccess[0]);
@@ -215,7 +215,7 @@ namespace OpenSim.Data.Tests
public void T022_EstateSettingsGroupList()
{
// Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
originalSettings.EstateGroups = new UUID[] { GROUP_ID_1, GROUP_ID_2 };
@@ -223,7 +223,7 @@ namespace OpenSim.Data.Tests
db.StoreEstateSettings(originalSettings);
// Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
Assert.AreEqual(2, loadedSettings.EstateAccess.Length);
Assert.AreEqual(GROUP_ID_1, loadedSettings.EstateGroups[0]);
@@ -234,7 +234,7 @@ namespace OpenSim.Data.Tests
public void T022_EstateSettingsBanList()
{
// Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings originalSettings = db.LoadEstateSettings(REGION_ID, true);
EstateBan estateBan1 = new EstateBan();
estateBan1.BannedUserID = DataTestUtil.UUID_MIN;
@@ -248,7 +248,7 @@ namespace OpenSim.Data.Tests
db.StoreEstateSettings(originalSettings);
// Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID);
+ EstateSettings loadedSettings = db.LoadEstateSettings(REGION_ID, true);
Assert.AreEqual(2, loadedSettings.EstateBans.Length);
Assert.AreEqual(DataTestUtil.UUID_MIN, loadedSettings.EstateBans[0].BannedUserID);
@@ -290,7 +290,7 @@ namespace OpenSim.Data.Tests
{
// Letting estate store generate rows to database for us
- EstateSettings originalSettings = db.LoadEstateSettings(regionId);
+ EstateSettings originalSettings = db.LoadEstateSettings(regionId, true);
SetEstateSettings(
originalSettings,
@@ -347,7 +347,7 @@ namespace OpenSim.Data.Tests
db.StoreEstateSettings(originalSettings);
// Loading settings to another instance variable.
- EstateSettings loadedSettings = db.LoadEstateSettings(regionId);
+ EstateSettings loadedSettings = db.LoadEstateSettings(regionId, true);
// Checking that loaded values are correct.
ValidateEstateSettings(
--
cgit v1.1
From 07a6b37001080ce197a4715776d100bcb9b2bb54 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 22 Mar 2010 20:38:27 +0000
Subject: Somehow the starting estate number in MySQL was lost. This adds a
migration to start estates at 100. Existing databases having autcreated
estates below 100 will see a gap in estate numbering. Other database
implementors need to ensure that no estates with numbers less that 100 are
autocreated, unless they are prepared to deal with the viewer's built-in
notions of Linden Mainland
---
OpenSim/Data/MySQL/Resources/032_RegionStore.sql | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 OpenSim/Data/MySQL/Resources/032_RegionStore.sql
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/MySQL/Resources/032_RegionStore.sql b/OpenSim/Data/MySQL/Resources/032_RegionStore.sql
new file mode 100644
index 0000000..dca5de7
--- /dev/null
+++ b/OpenSim/Data/MySQL/Resources/032_RegionStore.sql
@@ -0,0 +1,3 @@
+BEGIN;
+ALTER TABLE estate_settings AUTO_INCREMENT = 100;
+COMMIT;
--
cgit v1.1
From dcf18689b9ab29d4ceb2348bb56fc1f77a7a8912 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 23 Mar 2010 02:05:56 +0000
Subject: First stage of the new interactive region creation. This will allow
creation of a region and joining it to an existing estate or creating a new
estate, as well as creating an estate owner if in standalone, and assigning
estate owners. In Grid mode, existing users must be used. MySQL ONLY!!!! so
far, as I can't develop or test for either SQLite or MSSQL.
---
OpenSim/Data/MSSQL/MSSQLEstateData.cs | 25 +++++
OpenSim/Data/MySQL/MySQLEstateData.cs | 175 ++++++++++++++++++++++++--------
OpenSim/Data/SQLite/SQLiteEstateData.cs | 25 +++++
3 files changed, 180 insertions(+), 45 deletions(-)
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs
index 1624f56..474f706 100644
--- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs
@@ -346,6 +346,31 @@ namespace OpenSim.Data.MSSQL
}
}
}
+
+ public EstateSettings LoadEstateSettings(int estateID)
+ {
+ return new EstateSettings();
+ }
+
+ public List GetEstates(string search)
+ {
+ return new List();
+ }
+
+ public bool LinkRegion(UUID regionID, int estateID)
+ {
+ return false;
+ }
+
+ public List GetRegions(int estateID)
+ {
+ return new List();
+ }
+
+ public bool DeleteEstate(int estateID)
+ {
+ return false;
+ }
#endregion
}
}
diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs
index e94dcda..7fe1fcc 100644
--- a/OpenSim/Data/MySQL/MySQLEstateData.cs
+++ b/OpenSim/Data/MySQL/MySQLEstateData.cs
@@ -123,50 +123,57 @@ namespace OpenSim.Data.MySQL
public EstateSettings LoadEstateSettings(UUID regionID, bool create)
{
- EstateSettings es = new EstateSettings();
- es.OnSave += StoreEstateSettings;
-
string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) +
" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = ?RegionID";
+ using (MySqlCommand cmd = new MySqlCommand())
+ {
+ cmd.CommandText = sql;
+ cmd.Parameters.AddWithValue("?RegionID", regionID.ToString());
+
+ return DoLoad(cmd, regionID, create);
+ }
+ }
+
+ private EstateSettings DoLoad(MySqlCommand cmd, UUID regionID, bool create)
+ {
+ EstateSettings es = new EstateSettings();
+ es.OnSave += StoreEstateSettings;
+
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
{
dbcon.Open();
+ cmd.Connection = dbcon;
+
bool found = false;
- using (MySqlCommand cmd = dbcon.CreateCommand())
+ using (IDataReader r = cmd.ExecuteReader())
{
- cmd.CommandText = sql;
- cmd.Parameters.AddWithValue("?RegionID", regionID.ToString());
-
- using (IDataReader r = cmd.ExecuteReader())
+ if (r.Read())
{
- if (r.Read())
- {
- found = true;
+ found = true;
- foreach (string name in FieldList)
+ foreach (string name in FieldList)
+ {
+ if (m_FieldMap[name].GetValue(es) is bool)
{
- if (m_FieldMap[name].GetValue(es) is bool)
- {
- int v = Convert.ToInt32(r[name]);
- if (v != 0)
- m_FieldMap[name].SetValue(es, true);
- else
- m_FieldMap[name].SetValue(es, false);
- }
- else if (m_FieldMap[name].GetValue(es) is UUID)
- {
- UUID uuid = UUID.Zero;
-
- UUID.TryParse(r[name].ToString(), out uuid);
- m_FieldMap[name].SetValue(es, uuid);
- }
+ int v = Convert.ToInt32(r[name]);
+ if (v != 0)
+ m_FieldMap[name].SetValue(es, true);
else
- {
- m_FieldMap[name].SetValue(es, r[name]);
- }
+ m_FieldMap[name].SetValue(es, false);
+ }
+ else if (m_FieldMap[name].GetValue(es) is UUID)
+ {
+ UUID uuid = UUID.Zero;
+
+ UUID.TryParse(r[name].ToString(), out uuid);
+ m_FieldMap[name].SetValue(es, uuid);
+ }
+ else
+ {
+ m_FieldMap[name].SetValue(es, r[name]);
}
}
}
@@ -179,45 +186,45 @@ namespace OpenSim.Data.MySQL
names.Remove("EstateID");
- sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")";
+ string sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")";
- using (MySqlCommand cmd = dbcon.CreateCommand())
+ using (MySqlCommand cmd2 = dbcon.CreateCommand())
{
- cmd.CommandText = sql;
- cmd.Parameters.Clear();
+ cmd2.CommandText = sql;
+ cmd2.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");
+ cmd2.Parameters.AddWithValue("?" + name, "1");
else
- cmd.Parameters.AddWithValue("?" + name, "0");
+ cmd2.Parameters.AddWithValue("?" + name, "0");
}
else
{
- cmd.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString());
+ cmd2.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString());
}
}
- cmd.ExecuteNonQuery();
+ cmd2.ExecuteNonQuery();
- cmd.CommandText = "select LAST_INSERT_ID() as id";
- cmd.Parameters.Clear();
+ cmd2.CommandText = "select LAST_INSERT_ID() as id";
+ cmd2.Parameters.Clear();
- using (IDataReader r = cmd.ExecuteReader())
+ using (IDataReader r = cmd2.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());
+ cmd2.CommandText = "insert into estate_map values (?RegionID, ?EstateID)";
+ cmd2.Parameters.AddWithValue("?RegionID", regionID.ToString());
+ cmd2.Parameters.AddWithValue("?EstateID", es.EstateID.ToString());
// This will throw on dupe key
- try { cmd.ExecuteNonQuery(); }
+ try { cmd2.ExecuteNonQuery(); }
catch (Exception) { }
es.Save();
@@ -390,5 +397,83 @@ namespace OpenSim.Data.MySQL
return uuids.ToArray();
}
+
+ public EstateSettings LoadEstateSettings(int estateID)
+ {
+ using (MySqlCommand cmd = new MySqlCommand())
+ {
+ string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + " from estate_settings where EstateID = ?EstateID";
+
+ cmd.CommandText = sql;
+ cmd.Parameters.AddWithValue("?EstateID", estateID);
+
+ return DoLoad(cmd, UUID.Zero, false);
+ }
+ }
+
+ public List GetEstates(string search)
+ {
+ List result = new List();
+
+ using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
+ {
+ dbcon.Open();
+
+ using (MySqlCommand cmd = dbcon.CreateCommand())
+ {
+ cmd.CommandText = "select estateID from estate_settings where EstateName = ?EstateName";
+ cmd.Parameters.AddWithValue("?EstateName", search);
+
+ using (IDataReader reader = cmd.ExecuteReader())
+ {
+ while (reader.Read())
+ {
+ result.Add(Convert.ToInt32(reader["EstateID"]));
+ }
+ reader.Close();
+ }
+ }
+
+
+ dbcon.Close();
+ }
+
+ return result;
+ }
+
+ public bool LinkRegion(UUID regionID, int estateID)
+ {
+ using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
+ {
+ dbcon.Open();
+
+ using (MySqlCommand cmd = dbcon.CreateCommand())
+ {
+ cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)";
+ cmd.Parameters.AddWithValue("?RegionID", regionID);
+ cmd.Parameters.AddWithValue("?EstateID", estateID);
+
+ if (cmd.ExecuteNonQuery() == 0)
+ {
+ dbcon.Close();
+ return false;
+ }
+ }
+
+ dbcon.Close();
+ }
+
+ return true;
+ }
+
+ public List GetRegions(int estateID)
+ {
+ return new List();
+ }
+
+ public bool DeleteEstate(int estateID)
+ {
+ return false;
+ }
}
}
diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs
index 4a447d2..5b6135e 100644
--- a/OpenSim/Data/SQLite/SQLiteEstateData.cs
+++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs
@@ -320,5 +320,30 @@ namespace OpenSim.Data.SQLite
return uuids.ToArray();
}
+
+ public EstateSettings LoadEstateSettings(int estateID)
+ {
+ return new EstateSettings();
+ }
+
+ public List GetEstates(string search)
+ {
+ return new List();
+ }
+
+ public bool LinkRegion(UUID regionID, int estateID)
+ {
+ return false;
+ }
+
+ public List GetRegions(int estateID)
+ {
+ return new List();
+ }
+
+ public bool DeleteEstate(int estateID)
+ {
+ return false;
+ }
}
}
--
cgit v1.1
From 3fb73e4e266d7ac94281ec5a41a04a15c0b39ca7 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Tue, 23 Mar 2010 02:18:55 +0000
Subject: UNTESTED SQLite code to enable estate setup in interactive
confguration
---
OpenSim/Data/SQLite/SQLiteEstateData.cs | 52 ++++++++++++++++++++++++++++-----
1 file changed, 45 insertions(+), 7 deletions(-)
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs
index 5b6135e..bd6b776 100644
--- a/OpenSim/Data/SQLite/SQLiteEstateData.cs
+++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs
@@ -82,9 +82,6 @@ namespace OpenSim.Data.SQLite
public EstateSettings LoadEstateSettings(UUID regionID, bool create)
{
- EstateSettings es = new EstateSettings();
- es.OnSave += StoreEstateSettings;
-
string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = :RegionID";
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
@@ -92,6 +89,14 @@ namespace OpenSim.Data.SQLite
cmd.CommandText = sql;
cmd.Parameters.Add(":RegionID", regionID.ToString());
+ return DoLoad(cmd, regionID, create);
+ }
+
+ private EstateSettings DoLoad(SqliteCommand cmd, UUID regionID, bool create)
+ {
+ EstateSettings es = new EstateSettings();
+ es.OnSave += StoreEstateSettings;
+
IDataReader r = cmd.ExecuteReader();
if (r.Read())
@@ -128,7 +133,7 @@ namespace OpenSim.Data.SQLite
names.Remove("EstateID");
- sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")";
+ string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")";
cmd.CommandText = sql;
cmd.Parameters.Clear();
@@ -323,17 +328,50 @@ namespace OpenSim.Data.SQLite
public EstateSettings LoadEstateSettings(int estateID)
{
- return new EstateSettings();
+ string sql = "select estate_settings."+String.Join(",estate_settings.", FieldList)+" from estate_settings where estate_settings.EstateID :EstateID";
+
+ SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
+
+ cmd.CommandText = sql;
+ cmd.Parameters.Add(":EstateID", estateID.ToString());
+
+ return DoLoad(cmd, UUID.Zero, false);
}
public List GetEstates(string search)
{
- return new List();
+ List result = new List();
+
+ string sql = "select EstateID from estate_settings where estate_settings.EstateName :EstateName";
+
+ SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
+
+ cmd.CommandText = sql;
+ cmd.Parameters.Add(":EstateName", search);
+
+ IDataReader r = cmd.ExecuteReader();
+
+ while (r.Read())
+ {
+ result.Add(Convert.ToInt32(r["EstateID"]));
+ }
+ r.Close();
+
+ return result;
}
public bool LinkRegion(UUID regionID, int estateID)
{
- return false;
+ SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
+
+ cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)";
+ cmd.Parameters.Add(":RegionID", regionID.ToString());
+ cmd.Parameters.Add(":EstateID", estateID.ToString());
+
+ if (cmd.ExecuteNonQuery() == 0)
+ return false;
+
+ return true;
}
public List GetRegions(int estateID)
--
cgit v1.1
From 87fe96ae2c48216d006a02ef22392f0838fba17f Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 26 Mar 2010 00:10:29 +0000
Subject: replace recent IModule.GetGroup() with better GetGroupRecord(string
name)
---
OpenSim/Data/Null/NullRegionData.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/Null/NullRegionData.cs b/OpenSim/Data/Null/NullRegionData.cs
index 5b9898c..30ad747 100644
--- a/OpenSim/Data/Null/NullRegionData.cs
+++ b/OpenSim/Data/Null/NullRegionData.cs
@@ -40,7 +40,7 @@ namespace OpenSim.Data.Null
{
private static NullRegionData Instance = null;
- private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
+// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
Dictionary m_regionData = new Dictionary();
@@ -192,4 +192,4 @@ namespace OpenSim.Data.Null
return ret;
}
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From d6a64bf732ee88bdf9b62ad4f4303514f3215283 Mon Sep 17 00:00:00 2001
From: John Hurliman
Date: Fri, 26 Mar 2010 13:50:25 -0700
Subject: * Catch exceptions thrown when MySQLEstateData.LinkRegion() is
called. This won't fix the bug I'm seeing with regions not realizing they are
already part of an estate, but it will fix the OpenSim crash if that
situation ever comes up
---
OpenSim/Data/MySQL/MySQLEstateData.cs | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
(limited to 'OpenSim/Data')
diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs
index 7fe1fcc..d0c02f0 100644
--- a/OpenSim/Data/MySQL/MySQLEstateData.cs
+++ b/OpenSim/Data/MySQL/MySQLEstateData.cs
@@ -447,23 +447,29 @@ namespace OpenSim.Data.MySQL
{
dbcon.Open();
- using (MySqlCommand cmd = dbcon.CreateCommand())
+ try
{
- cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)";
- cmd.Parameters.AddWithValue("?RegionID", regionID);
- cmd.Parameters.AddWithValue("?EstateID", estateID);
-
- if (cmd.ExecuteNonQuery() == 0)
+ using (MySqlCommand cmd = dbcon.CreateCommand())
{
+ cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)";
+ cmd.Parameters.AddWithValue("?RegionID", regionID);
+ cmd.Parameters.AddWithValue("?EstateID", estateID);
+
+ int ret = cmd.ExecuteNonQuery();
dbcon.Close();
- return false;
+
+ return (ret != 0);
}
}
+ catch (MySqlException ex)
+ {
+ m_log.Error("[REGION DB]: LinkRegion failed: " + ex.Message);
+ }
dbcon.Close();
}
- return true;
+ return false;
}
public List GetRegions(int estateID)
--
cgit v1.1