From 26c5b329886e3bbf81e2c853ef2fc6d648ad5273 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 7 Jun 2012 22:39:03 +0200
Subject: Add the ability to query the MYSQL databse for a list of the stored
 prim UUIDs

---
 OpenSim/Data/MSSQL/MSSQLSimulationData.cs          |  5 ++++
 OpenSim/Data/MySQL/MySQLSimulationData.cs          | 31 ++++++++++++++++++++++
 OpenSim/Data/Null/NullSimulationData.cs            |  5 ++++
 OpenSim/Data/SQLite/SQLiteSimulationData.cs        |  4 +++
 .../Framework/Interfaces/ISimulationDataService.cs |  2 ++
 .../Framework/Interfaces/ISimulationDataStore.cs   |  1 +
 .../Connectors/Simulation/SimulationDataService.cs |  5 ++++
 OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs  | 10 +++++++
 8 files changed, 63 insertions(+)

diff --git a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
index d9dfe86..df496a7 100644
--- a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
@@ -2136,5 +2136,10 @@ VALUES
                 }
             }
         }
+
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            return new UUID[0];
+        }
     }
 }
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs
index ec7a454..b978334 100644
--- a/OpenSim/Data/MySQL/MySQLSimulationData.cs
+++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs
@@ -1911,6 +1911,37 @@ namespace OpenSim.Data.MySQL
             }
         }
 
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            List<UUID> uuids = new List<UUID>();
+
+            lock (m_dbLock)
+            {
+                using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
+                {
+                    dbcon.Open();
+
+                    using (MySqlCommand cmd = dbcon.CreateCommand())
+                    {
+                        cmd.CommandText = "select UUID prom prims where RegionUUID = ?RegionUUID";
+                        cmd.Parameters.AddWithValue("RegionUUID", regionID.ToString());
+
+                        using (IDataReader reader = ExecuteReader(cmd))
+                        {
+                            while (reader.Read())
+                            {
+                                UUID id = new UUID(reader["UUID"].ToString());
+
+                                uuids.Add(id);
+                            }
+                        }
+                    }
+                }
+            }
+
+            return uuids.ToArray();
+        }
+
         private void LoadSpawnPoints(RegionSettings rs)
         {
             rs.ClearSpawnPoints();
diff --git a/OpenSim/Data/Null/NullSimulationData.cs b/OpenSim/Data/Null/NullSimulationData.cs
index b788976..24b4511 100644
--- a/OpenSim/Data/Null/NullSimulationData.cs
+++ b/OpenSim/Data/Null/NullSimulationData.cs
@@ -133,5 +133,10 @@ namespace OpenSim.Data.Null
         public void Shutdown()
         {
         }
+
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            return new UUID[0];
+        }
     }
 }
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
index 7e7c08a..9ec285c 100644
--- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
@@ -2791,5 +2791,9 @@ namespace OpenSim.Data.SQLite
             }
         }
 
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            return new UUID[0];
+        }
     }
 }
diff --git a/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs b/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs
index 5295a72..5b69616 100644
--- a/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs
+++ b/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs
@@ -95,5 +95,7 @@ namespace OpenSim.Region.Framework.Interfaces
         RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
         void StoreRegionWindlightSettings(RegionLightShareData wl);
         void RemoveRegionWindlightSettings(UUID regionID);
+
+        UUID[] GetObjectIDs(UUID regionID);
     }
 }
diff --git a/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs b/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs
index 615f377..b7d9cfa 100644
--- a/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs
+++ b/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs
@@ -106,6 +106,7 @@ namespace OpenSim.Region.Framework.Interfaces
         RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
         void StoreRegionWindlightSettings(RegionLightShareData wl);
         void RemoveRegionWindlightSettings(UUID regionID);
+        UUID[] GetObjectIDs(UUID regionID);
 
         void Shutdown();
     }
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs b/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs
index ccef50b..620bb10 100644
--- a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs
+++ b/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs
@@ -148,5 +148,10 @@ namespace OpenSim.Services.Connectors
         {
             m_database.RemoveRegionWindlightSettings(regionID);
         }
+
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            return m_database.GetObjectIDs(regionID);
+        }
     }
 }
diff --git a/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs b/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs
index 579d41c..38fbbe3 100644
--- a/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs
+++ b/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs
@@ -112,6 +112,11 @@ namespace OpenSim.Data.Null
         {
             m_store.StoreRegionWindlightSettings(wl);
         }
+
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            return new UUID[0];
+        }
     }
 
     /// <summary>
@@ -285,5 +290,10 @@ namespace OpenSim.Data.Null
         public void Shutdown()
         {
         }
+
+        public UUID[] GetObjectIDs(UUID regionID)
+        {
+            return new UUID[0];
+        }
     }
 }
-- 
cgit v1.1