aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/AssetDataBase.cs3
-rw-r--r--OpenSim/Data/IAssetData.cs2
-rw-r--r--OpenSim/Data/MSSQL/MSSQLAssetData.cs36
-rw-r--r--OpenSim/Data/MySQL/MySQLAssetData.cs51
-rw-r--r--OpenSim/Data/NHibernate/NHibernateAssetData.cs15
-rw-r--r--OpenSim/Data/SQLite/SQLiteAssetData.cs50
6 files changed, 157 insertions, 0 deletions
diff --git a/OpenSim/Data/AssetDataBase.cs b/OpenSim/Data/AssetDataBase.cs
index 2cdbbe1..d699f17 100644
--- a/OpenSim/Data/AssetDataBase.cs
+++ b/OpenSim/Data/AssetDataBase.cs
@@ -25,6 +25,7 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System.Collections.Generic;
28using OpenMetaverse; 29using OpenMetaverse;
29using OpenSim.Framework; 30using OpenSim.Framework;
30 31
@@ -37,6 +38,8 @@ namespace OpenSim.Data
37 public abstract void UpdateAsset(AssetBase asset); 38 public abstract void UpdateAsset(AssetBase asset);
38 public abstract bool ExistsAsset(UUID uuid); 39 public abstract bool ExistsAsset(UUID uuid);
39 40
41 public abstract List<AssetMetadata> FetchAssetMetadataSet(int start, int count);
42
40 public abstract string Version { get; } 43 public abstract string Version { get; }
41 public abstract string Name { get; } 44 public abstract string Name { get; }
42 public abstract void Initialise(string connect); 45 public abstract void Initialise(string connect);
diff --git a/OpenSim/Data/IAssetData.cs b/OpenSim/Data/IAssetData.cs
index 47e25f3..ddbc10f 100644
--- a/OpenSim/Data/IAssetData.cs
+++ b/OpenSim/Data/IAssetData.cs
@@ -25,6 +25,7 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System.Collections.Generic;
28using OpenMetaverse; 29using OpenMetaverse;
29using OpenSim.Framework; 30using OpenSim.Framework;
30 31
@@ -36,6 +37,7 @@ namespace OpenSim.Data
36 void CreateAsset(AssetBase asset); 37 void CreateAsset(AssetBase asset);
37 void UpdateAsset(AssetBase asset); 38 void UpdateAsset(AssetBase asset);
38 bool ExistsAsset(UUID uuid); 39 bool ExistsAsset(UUID uuid);
40 List<AssetMetadata> FetchAssetMetadataSet(int start, int count);
39 void Initialise(string connect); 41 void Initialise(string connect);
40 } 42 }
41 43
diff --git a/OpenSim/Data/MSSQL/MSSQLAssetData.cs b/OpenSim/Data/MSSQL/MSSQLAssetData.cs
index 61db8f5..edacf08 100644
--- a/OpenSim/Data/MSSQL/MSSQLAssetData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLAssetData.cs
@@ -28,6 +28,7 @@
28using System; 28using System;
29using System.Data; 29using System.Data;
30using System.Reflection; 30using System.Reflection;
31using System.Collections.Generic;
31using OpenMetaverse; 32using OpenMetaverse;
32using log4net; 33using log4net;
33using OpenSim.Framework; 34using OpenSim.Framework;
@@ -245,6 +246,41 @@ namespace OpenSim.Data.MSSQL
245 return false; 246 return false;
246 } 247 }
247 248
249 /// <summary>
250 /// Returns a list of AssetMetadata objects. The list is a subset of
251 /// the entire data set offset by <paramref name="start" /> containing
252 /// <paramref name="count" /> elements.
253 /// </summary>
254 /// <param name="start">The number of results to discard from the total data set.</param>
255 /// <param name="count">The number of rows the returned list should contain.</param>
256 /// <returns>A list of AssetMetadata objects.</returns>
257 public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count)
258 {
259 List<AssetMetadata> retList = new List<AssetMetadata>(count);
260
261 using (AutoClosingSqlCommand command = database.Query("SELECT name,description,assetType,temporary,id FROM assets LIMIT @start, @count"))
262 {
263 command.Parameters.Add(database.CreateParameter("start", start));
264 command.Parameters.Add(database.CreateParameter("count", count));
265
266 using (IDataReader reader = command.ExecuteReader())
267 {
268 while (reader.Read())
269 {
270 AssetMetadata metadata = new AssetMetadata();
271 // Region Main
272 metadata.FullID = new UUID((Guid)reader["id"]);
273 metadata.Name = (string)reader["name"];
274 metadata.Description = (string)reader["description"];
275 metadata.Type = Convert.ToSByte(reader["assetType"]);
276 metadata.Temporary = Convert.ToBoolean(reader["temporary"]);
277 }
278 }
279 }
280
281 return retList;
282 }
283
248 #endregion 284 #endregion
249 } 285 }
250} 286}
diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs
index 2211d4c..466f5db 100644
--- a/OpenSim/Data/MySQL/MySQLAssetData.cs
+++ b/OpenSim/Data/MySQL/MySQLAssetData.cs
@@ -28,6 +28,7 @@
28using System; 28using System;
29using System.Data; 29using System.Data;
30using System.Reflection; 30using System.Reflection;
31using System.Collections.Generic;
31using log4net; 32using log4net;
32using MySql.Data.MySqlClient; 33using MySql.Data.MySqlClient;
33using OpenMetaverse; 34using OpenMetaverse;
@@ -311,6 +312,56 @@ namespace OpenSim.Data.MySQL
311 return assetExists; 312 return assetExists;
312 } 313 }
313 314
315 /// <summary>
316 /// Returns a list of AssetMetadata objects. The list is a subset of
317 /// the entire data set offset by <paramref name="start" /> containing
318 /// <paramref name="count" /> elements.
319 /// </summary>
320 /// <param name="start">The number of results to discard from the total data set.</param>
321 /// <param name="count">The number of rows the returned list should contain.</param>
322 /// <returns>A list of AssetMetadata objects.</returns>
323 public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count)
324 {
325 List<AssetMetadata> retList = new List<AssetMetadata>(count);
326
327 lock (_dbConnection)
328 {
329 _dbConnection.CheckConnection();
330
331 MySqlCommand cmd = new MySqlCommand("SELECT name,description,assetType,temporary,id FROM assets LIMIT ?start, ?count", _dbConnection.Connection);
332 cmd.Parameters.AddWithValue("?start", start);
333 cmd.Parameters.AddWithValue("?count", count);
334
335 try
336 {
337 using (MySqlDataReader dbReader = cmd.ExecuteReader())
338 {
339 while (dbReader.Read())
340 {
341 AssetMetadata metadata = new AssetMetadata();
342 metadata.Name = (string) dbReader["name"];
343 metadata.Description = (string) dbReader["description"];
344 metadata.Type = (sbyte) dbReader["assetType"];
345 metadata.Temporary = (bool) dbReader["temporary"]; // Not sure if this is correct.
346 metadata.FullID = new UUID((string) dbReader["id"]);
347
348 // Current SHA1s are not stored/computed.
349 metadata.SHA1 = new byte[] {};
350
351 retList.Add(metadata);
352 }
353 }
354 }
355 catch (Exception e)
356 {
357 m_log.Error("[ASSETS DB]: MySql failure fetching asset set" + Environment.NewLine + e.ToString() + Environment.NewLine + "Attempting reconnection");
358 _dbConnection.Reconnect();
359 }
360 }
361
362 return retList;
363 }
364
314 #endregion 365 #endregion
315 366
316 /// <summary> 367 /// <summary>
diff --git a/OpenSim/Data/NHibernate/NHibernateAssetData.cs b/OpenSim/Data/NHibernate/NHibernateAssetData.cs
index 387d3d4..4e8f708 100644
--- a/OpenSim/Data/NHibernate/NHibernateAssetData.cs
+++ b/OpenSim/Data/NHibernate/NHibernateAssetData.cs
@@ -26,6 +26,7 @@
26 */ 26 */
27 27
28using System.Reflection; 28using System.Reflection;
29using System.Collections.Generic;
29using log4net; 30using log4net;
30using OpenMetaverse; 31using OpenMetaverse;
31using OpenSim.Framework; 32using OpenSim.Framework;
@@ -109,6 +110,20 @@ namespace OpenSim.Data.NHibernate
109 return (FetchAsset(uuid) != null); 110 return (FetchAsset(uuid) != null);
110 } 111 }
111 112
113 /// <summary>
114 /// Returns a list of AssetMetadata objects. The list is a subset of
115 /// the entire data set offset by <paramref name="start" /> containing
116 /// <paramref name="count" /> elements.
117 /// </summary>
118 /// <param name="start">The number of results to discard from the total data set.</param>
119 /// <param name="count">The number of rows the returned list should contain.</param>
120 /// <returns>A list of AssetMetadata objects.</returns>
121 public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count)
122 {
123 List<AssetMetadata> retList = new List<AssetMetadata>(count);
124 return retList;
125 }
126
112 public void DeleteAsset(UUID uuid) 127 public void DeleteAsset(UUID uuid)
113 { 128 {
114 129
diff --git a/OpenSim/Data/SQLite/SQLiteAssetData.cs b/OpenSim/Data/SQLite/SQLiteAssetData.cs
index 1b42198..6a323e1 100644
--- a/OpenSim/Data/SQLite/SQLiteAssetData.cs
+++ b/OpenSim/Data/SQLite/SQLiteAssetData.cs
@@ -28,6 +28,7 @@
28using System; 28using System;
29using System.Data; 29using System.Data;
30using System.Reflection; 30using System.Reflection;
31using System.Collections.Generic;
31using log4net; 32using log4net;
32using Mono.Data.SqliteClient; 33using Mono.Data.SqliteClient;
33using OpenMetaverse; 34using OpenMetaverse;
@@ -49,6 +50,7 @@ namespace OpenSim.Data.SQLite
49 /// Artificial constructor called upon plugin load 50 /// Artificial constructor called upon plugin load
50 /// </summary> 51 /// </summary>
51 private const string SelectAssetSQL = "select * from assets where UUID=:UUID"; 52 private const string SelectAssetSQL = "select * from assets where UUID=:UUID";
53 private const string SelectAssetMetadataSQL = "select Name, Description, Type, Temporary, UUID from assets limit :start, :count";
52 private const string DeleteAssetSQL = "delete from assets where UUID=:UUID"; 54 private const string DeleteAssetSQL = "delete from assets where UUID=:UUID";
53 private const string InsertAssetSQL = "insert into assets(UUID, Name, Description, Type, Local, Temporary, Data) values(:UUID, :Name, :Description, :Type, :Local, :Temporary, :Data)"; 55 private const string InsertAssetSQL = "insert into assets(UUID, Name, Description, Type, Local, Temporary, Data) values(:UUID, :Name, :Description, :Type, :Local, :Temporary, :Data)";
54 private const string UpdateAssetSQL = "update assets set Name=:Name, Description=:Description, Type=:Type, Local=:Local, Temporary=:Temporary, Data=:Data where UUID=:UUID"; 56 private const string UpdateAssetSQL = "update assets set Name=:Name, Description=:Description, Type=:Type, Local=:Local, Temporary=:Temporary, Data=:Data where UUID=:UUID";
@@ -256,6 +258,54 @@ namespace OpenSim.Data.SQLite
256 return asset; 258 return asset;
257 } 259 }
258 260
261 private static AssetMetadata buildAssetMetadata(IDataReader row)
262 {
263 AssetMetadata metadata = new AssetMetadata();
264
265 metadata.FullID = new UUID((string) row["UUID"]);
266 metadata.Name = (string) row["Name"];
267 metadata.Description = (string) row["Description"];
268 metadata.Type = Convert.ToSByte(row["Type"]);
269 metadata.Temporary = Convert.ToBoolean(row["Temporary"]); // Not sure if this is correct.
270
271 // Current SHA1s are not stored/computed.
272 metadata.SHA1 = new byte[] {};
273
274 return metadata;
275 }
276
277 /// <summary>
278 /// Returns a list of AssetMetadata objects. The list is a subset of
279 /// the entire data set offset by <paramref name="start" /> containing
280 /// <paramref name="count" /> elements.
281 /// </summary>
282 /// <param name="start">The number of results to discard from the total data set.</param>
283 /// <param name="count">The number of rows the returned list should contain.</param>
284 /// <returns>A list of AssetMetadata objects.</returns>
285 public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count)
286 {
287 List<AssetMetadata> retList = new List<AssetMetadata>(count);
288
289 lock (this)
290 {
291 using (SqliteCommand cmd = new SqliteCommand(SelectAssetMetadataSQL, m_conn))
292 {
293 cmd.Parameters.Add(new SqliteParameter(":start", start));
294 cmd.Parameters.Add(new SqliteParameter(":count", count));
295
296 using (IDataReader reader = cmd.ExecuteReader())
297 {
298 while (reader.Read())
299 {
300 AssetMetadata metadata = buildAssetMetadata(reader);
301 retList.Add(metadata);
302 }
303 }
304 }
305 }
306
307 return retList;
308 }
259 309
260 /*********************************************************************** 310 /***********************************************************************
261 * 311 *