diff options
-rw-r--r-- | OpenSim/Services/InventoryService/InventoryService.cs | 102 | ||||
-rw-r--r-- | OpenSim/Services/InventoryService/InventoryServiceBase.cs | 41 |
2 files changed, 28 insertions, 115 deletions
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 9dbd591..1190b38 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs | |||
@@ -72,16 +72,10 @@ namespace OpenSim.Services.InventoryService | |||
72 | 72 | ||
73 | userFolders.Add(rootFolder); | 73 | userFolders.Add(rootFolder); |
74 | 74 | ||
75 | foreach (IInventoryDataPlugin plugin in m_plugins) | 75 | IList<InventoryFolderBase> folders = m_Database.getFolderHierarchy(rootFolder.ID); |
76 | { | 76 | userFolders.AddRange(folders); |
77 | IList<InventoryFolderBase> folders = plugin.getFolderHierarchy(rootFolder.ID); | ||
78 | userFolders.AddRange(folders); | ||
79 | } | ||
80 | 77 | ||
81 | // foreach (InventoryFolderBase folder in userFolders) | 78 | // m_log.DebugFormat("[INVENTORY SERVICE]: Got folder {0} {1}", folder.name, folder.folderID); |
82 | // { | ||
83 | // m_log.DebugFormat("[INVENTORY SERVICE]: Got folder {0} {1}", folder.name, folder.folderID); | ||
84 | // } | ||
85 | 79 | ||
86 | return userFolders; | 80 | return userFolders; |
87 | } | 81 | } |
@@ -94,15 +88,12 @@ namespace OpenSim.Services.InventoryService | |||
94 | // See IInventoryServices | 88 | // See IInventoryServices |
95 | public virtual InventoryFolderBase RequestRootFolder(UUID userID) | 89 | public virtual InventoryFolderBase RequestRootFolder(UUID userID) |
96 | { | 90 | { |
97 | // Retrieve the first root folder we get from the list of plugins. | 91 | // Retrieve the first root folder we get from the DB. |
98 | foreach (IInventoryDataPlugin plugin in m_plugins) | 92 | InventoryFolderBase rootFolder = m_Database.getUserRootFolder(userID); |
99 | { | 93 | if (rootFolder != null) |
100 | InventoryFolderBase rootFolder = plugin.getUserRootFolder(userID); | 94 | return rootFolder; |
101 | if (rootFolder != null) | ||
102 | return rootFolder; | ||
103 | } | ||
104 | 95 | ||
105 | // Return nothing if no plugin was able to supply a root folder | 96 | // Return nothing if the plugin was unable to supply a root folder |
106 | return null; | 97 | return null; |
107 | } | 98 | } |
108 | 99 | ||
@@ -246,10 +237,7 @@ namespace OpenSim.Services.InventoryService | |||
246 | public List<InventoryItemBase> GetActiveGestures(UUID userId) | 237 | public List<InventoryItemBase> GetActiveGestures(UUID userId) |
247 | { | 238 | { |
248 | List<InventoryItemBase> activeGestures = new List<InventoryItemBase>(); | 239 | List<InventoryItemBase> activeGestures = new List<InventoryItemBase>(); |
249 | foreach (IInventoryDataPlugin plugin in m_plugins) | 240 | activeGestures.AddRange(m_Database.fetchActiveGestures(userId)); |
250 | { | ||
251 | activeGestures.AddRange(plugin.fetchActiveGestures(userId)); | ||
252 | } | ||
253 | 241 | ||
254 | return activeGestures; | 242 | return activeGestures; |
255 | } | 243 | } |
@@ -262,10 +250,7 @@ namespace OpenSim.Services.InventoryService | |||
262 | { | 250 | { |
263 | List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>(); | 251 | List<InventoryFolderBase> inventoryList = new List<InventoryFolderBase>(); |
264 | 252 | ||
265 | foreach (IInventoryDataPlugin plugin in m_plugins) | 253 | inventoryList.AddRange(m_Database.getInventoryFolders(parentFolderID)); |
266 | { | ||
267 | inventoryList.AddRange(plugin.getInventoryFolders(parentFolderID)); | ||
268 | } | ||
269 | 254 | ||
270 | return inventoryList; | 255 | return inventoryList; |
271 | } | 256 | } |
@@ -274,10 +259,7 @@ namespace OpenSim.Services.InventoryService | |||
274 | { | 259 | { |
275 | List<InventoryItemBase> itemsList = new List<InventoryItemBase>(); | 260 | List<InventoryItemBase> itemsList = new List<InventoryItemBase>(); |
276 | 261 | ||
277 | foreach (IInventoryDataPlugin plugin in m_plugins) | 262 | itemsList.AddRange(m_Database.getInventoryInFolder(folderID)); |
278 | { | ||
279 | itemsList.AddRange(plugin.getInventoryInFolder(folderID)); | ||
280 | } | ||
281 | 263 | ||
282 | return itemsList; | 264 | return itemsList; |
283 | } | 265 | } |
@@ -290,10 +272,7 @@ namespace OpenSim.Services.InventoryService | |||
290 | m_log.DebugFormat( | 272 | m_log.DebugFormat( |
291 | "[INVENTORY SERVICE]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); | 273 | "[INVENTORY SERVICE]: Adding folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); |
292 | 274 | ||
293 | foreach (IInventoryDataPlugin plugin in m_plugins) | 275 | m_Database.addInventoryFolder(folder); |
294 | { | ||
295 | plugin.addInventoryFolder(folder); | ||
296 | } | ||
297 | 276 | ||
298 | // FIXME: Should return false on failure | 277 | // FIXME: Should return false on failure |
299 | return true; | 278 | return true; |
@@ -305,10 +284,7 @@ namespace OpenSim.Services.InventoryService | |||
305 | m_log.DebugFormat( | 284 | m_log.DebugFormat( |
306 | "[INVENTORY SERVICE]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); | 285 | "[INVENTORY SERVICE]: Updating folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); |
307 | 286 | ||
308 | foreach (IInventoryDataPlugin plugin in m_plugins) | 287 | m_Database.updateInventoryFolder(folder); |
309 | { | ||
310 | plugin.updateInventoryFolder(folder); | ||
311 | } | ||
312 | 288 | ||
313 | // FIXME: Should return false on failure | 289 | // FIXME: Should return false on failure |
314 | return true; | 290 | return true; |
@@ -320,10 +296,7 @@ namespace OpenSim.Services.InventoryService | |||
320 | m_log.DebugFormat( | 296 | m_log.DebugFormat( |
321 | "[INVENTORY SERVICE]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); | 297 | "[INVENTORY SERVICE]: Moving folder {0} {1} to folder {2}", folder.Name, folder.ID, folder.ParentID); |
322 | 298 | ||
323 | foreach (IInventoryDataPlugin plugin in m_plugins) | 299 | m_Database.moveInventoryFolder(folder); |
324 | { | ||
325 | plugin.moveInventoryFolder(folder); | ||
326 | } | ||
327 | 300 | ||
328 | // FIXME: Should return false on failure | 301 | // FIXME: Should return false on failure |
329 | return true; | 302 | return true; |
@@ -335,10 +308,7 @@ namespace OpenSim.Services.InventoryService | |||
335 | m_log.DebugFormat( | 308 | m_log.DebugFormat( |
336 | "[INVENTORY SERVICE]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder); | 309 | "[INVENTORY SERVICE]: Adding item {0} {1} to folder {2}", item.Name, item.ID, item.Folder); |
337 | 310 | ||
338 | foreach (IInventoryDataPlugin plugin in m_plugins) | 311 | m_Database.addInventoryItem(item); |
339 | { | ||
340 | plugin.addInventoryItem(item); | ||
341 | } | ||
342 | 312 | ||
343 | // FIXME: Should return false on failure | 313 | // FIXME: Should return false on failure |
344 | return true; | 314 | return true; |
@@ -350,10 +320,7 @@ namespace OpenSim.Services.InventoryService | |||
350 | m_log.InfoFormat( | 320 | m_log.InfoFormat( |
351 | "[INVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder); | 321 | "[INVENTORY SERVICE]: Updating item {0} {1} in folder {2}", item.Name, item.ID, item.Folder); |
352 | 322 | ||
353 | foreach (IInventoryDataPlugin plugin in m_plugins) | 323 | m_Database.updateInventoryItem(item); |
354 | { | ||
355 | plugin.updateInventoryItem(item); | ||
356 | } | ||
357 | 324 | ||
358 | // FIXME: Should return false on failure | 325 | // FIXME: Should return false on failure |
359 | return true; | 326 | return true; |
@@ -365,10 +332,7 @@ namespace OpenSim.Services.InventoryService | |||
365 | m_log.InfoFormat( | 332 | m_log.InfoFormat( |
366 | "[INVENTORY SERVICE]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder); | 333 | "[INVENTORY SERVICE]: Deleting item {0} {1} from folder {2}", item.Name, item.ID, item.Folder); |
367 | 334 | ||
368 | foreach (IInventoryDataPlugin plugin in m_plugins) | 335 | m_Database.deleteInventoryItem(item.ID); |
369 | { | ||
370 | plugin.deleteInventoryItem(item.ID); | ||
371 | } | ||
372 | 336 | ||
373 | // FIXME: Should return false on failure | 337 | // FIXME: Should return false on failure |
374 | return true; | 338 | return true; |
@@ -376,24 +340,18 @@ namespace OpenSim.Services.InventoryService | |||
376 | 340 | ||
377 | public virtual InventoryItemBase QueryItem(InventoryItemBase item) | 341 | public virtual InventoryItemBase QueryItem(InventoryItemBase item) |
378 | { | 342 | { |
379 | foreach (IInventoryDataPlugin plugin in m_plugins) | 343 | InventoryItemBase result = m_Database.queryInventoryItem(item.ID); |
380 | { | 344 | if (result != null) |
381 | InventoryItemBase result = plugin.queryInventoryItem(item.ID); | 345 | return result; |
382 | if (result != null) | ||
383 | return result; | ||
384 | } | ||
385 | 346 | ||
386 | return null; | 347 | return null; |
387 | } | 348 | } |
388 | 349 | ||
389 | public virtual InventoryFolderBase QueryFolder(InventoryFolderBase item) | 350 | public virtual InventoryFolderBase QueryFolder(InventoryFolderBase item) |
390 | { | 351 | { |
391 | foreach (IInventoryDataPlugin plugin in m_plugins) | 352 | InventoryFolderBase result = m_Database.queryInventoryFolder(item.ID); |
392 | { | 353 | if (result != null) |
393 | InventoryFolderBase result = plugin.queryInventoryFolder(item.ID); | 354 | return result; |
394 | if (result != null) | ||
395 | return result; | ||
396 | } | ||
397 | 355 | ||
398 | return null; | 356 | return null; |
399 | } | 357 | } |
@@ -416,10 +374,7 @@ namespace OpenSim.Services.InventoryService | |||
416 | { | 374 | { |
417 | // m_log.DebugFormat("[INVENTORY SERVICE]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID); | 375 | // m_log.DebugFormat("[INVENTORY SERVICE]: Deleting folder {0} {1}", subFolder.Name, subFolder.ID); |
418 | 376 | ||
419 | foreach (IInventoryDataPlugin plugin in m_plugins) | 377 | m_Database.deleteInventoryFolder(subFolder.ID); |
420 | { | ||
421 | plugin.deleteInventoryFolder(subFolder.ID); | ||
422 | } | ||
423 | } | 378 | } |
424 | 379 | ||
425 | List<InventoryItemBase> items = GetFolderItems(folder.ID); | 380 | List<InventoryItemBase> items = GetFolderItems(folder.ID); |
@@ -443,12 +398,9 @@ namespace OpenSim.Services.InventoryService | |||
443 | 398 | ||
444 | public InventoryItemBase GetInventoryItem(UUID itemID) | 399 | public InventoryItemBase GetInventoryItem(UUID itemID) |
445 | { | 400 | { |
446 | foreach (IInventoryDataPlugin plugin in m_plugins) | 401 | InventoryItemBase item = m_Database.getInventoryItem(itemID); |
447 | { | 402 | if (item != null) |
448 | InventoryItemBase item = plugin.getInventoryItem(itemID); | 403 | return item; |
449 | if (item != null) | ||
450 | return item; | ||
451 | } | ||
452 | 404 | ||
453 | return null; | 405 | return null; |
454 | } | 406 | } |
diff --git a/OpenSim/Services/InventoryService/InventoryServiceBase.cs b/OpenSim/Services/InventoryService/InventoryServiceBase.cs index 4526c34..456e455 100644 --- a/OpenSim/Services/InventoryService/InventoryServiceBase.cs +++ b/OpenSim/Services/InventoryService/InventoryServiceBase.cs | |||
@@ -40,8 +40,6 @@ namespace OpenSim.Services.InventoryService | |||
40 | { | 40 | { |
41 | protected IInventoryDataPlugin m_Database = null; | 41 | protected IInventoryDataPlugin m_Database = null; |
42 | 42 | ||
43 | protected List<IInventoryDataPlugin> m_plugins = new List<IInventoryDataPlugin>(); | ||
44 | |||
45 | public InventoryServiceBase(IConfigSource config) : base(config) | 43 | public InventoryServiceBase(IConfigSource config) : base(config) |
46 | { | 44 | { |
47 | string dllName = String.Empty; | 45 | string dllName = String.Empty; |
@@ -56,8 +54,6 @@ namespace OpenSim.Services.InventoryService | |||
56 | dllName = dbConfig.GetString("StorageProvider", String.Empty); | 54 | dllName = dbConfig.GetString("StorageProvider", String.Empty); |
57 | connString = dbConfig.GetString("ConnectionString", String.Empty); | 55 | connString = dbConfig.GetString("ConnectionString", String.Empty); |
58 | } | 56 | } |
59 | else | ||
60 | Console.WriteLine("------ dbConfig = null!"); | ||
61 | 57 | ||
62 | // | 58 | // |
63 | // Try reading the more specific [InventoryService] section, if it exists | 59 | // Try reading the more specific [InventoryService] section, if it exists |
@@ -79,43 +75,8 @@ namespace OpenSim.Services.InventoryService | |||
79 | if (m_Database == null) | 75 | if (m_Database == null) |
80 | throw new Exception("Could not find a storage interface in the given module"); | 76 | throw new Exception("Could not find a storage interface in the given module"); |
81 | 77 | ||
82 | //m_Database.Initialise(connString); | 78 | m_Database.Initialise(connString); |
83 | List<IInventoryDataPlugin> plugins | ||
84 | = DataPluginFactory.LoadDataPlugins<IInventoryDataPlugin>(dllName, connString); | ||
85 | |||
86 | foreach (IInventoryDataPlugin plugin in plugins) | ||
87 | AddPlugin(plugin); | ||
88 | |||
89 | } | ||
90 | |||
91 | #region Plugin methods | ||
92 | |||
93 | /// <summary> | ||
94 | /// Add a new inventory data plugin - plugins will be requested in the order they were added. | ||
95 | /// </summary> | ||
96 | /// <param name="plugin">The plugin that will provide data</param> | ||
97 | public void AddPlugin(IInventoryDataPlugin plugin) | ||
98 | { | ||
99 | m_plugins.Add(plugin); | ||
100 | } | ||
101 | |||
102 | /// <summary> | ||
103 | /// Adds a list of inventory data plugins, as described by `provider' | ||
104 | /// and `connect', to `m_plugins'. | ||
105 | /// </summary> | ||
106 | /// <param name="provider"> | ||
107 | /// The filename of the inventory server plugin DLL. | ||
108 | /// </param> | ||
109 | /// <param name="connect"> | ||
110 | /// The connection string for the storage backend. | ||
111 | /// </param> | ||
112 | public void AddPlugins(string provider, string connect) | ||
113 | { | ||
114 | m_plugins.AddRange(DataPluginFactory.LoadDataPlugins<IInventoryDataPlugin>(provider, connect)); | ||
115 | } | 79 | } |
116 | 80 | ||
117 | #endregion | ||
118 | |||
119 | |||
120 | } | 81 | } |
121 | } | 82 | } |