From 6084a7ea3eb8fff88d57ca911b9b922a2f09ccf7 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Thu, 17 Jul 2008 18:59:10 +0000 Subject: Revert "git merge" This reverts commit 80e1c3742a3ba7eb9aa1686a242b36f64331095a. --- OpenSim/Data/NHibernate/NHibernateRegionData.cs | 30 +++++++++++++++++++++- .../Data/NHibernate/Resources/RegionStore.hbm.xml | 21 ++++++++++++++- OpenSim/Data/NHibernate/TextureUserType.cs | 12 +++++++-- 3 files changed, 59 insertions(+), 4 deletions(-) (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs index 8ca0afe..3ba3556 100644 --- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs +++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs @@ -26,6 +26,7 @@ */ using System; +using System.Collections; using System.Collections.Generic; using System.IO; using System.Reflection; @@ -112,6 +113,33 @@ namespace OpenSim.Data.NHibernate { return null; } + + private void SaveOrUpdate(SceneObjectPart p) + { + try + { + ICriteria criteria = session.CreateCriteria(typeof(SceneObjectPart)); + criteria.Add(Expression.Eq("UUID", p.UUID)); + if (criteria.List().Count < 1) + { + session.Save(p); + } + else if (criteria.List().Count == 1) + { + SceneObjectPart old = (SceneObjectPart)criteria.List()[0]; + session.Evict(old); + session.Update(p); + } + else + { + m_log.Error("Not unique"); + } + } + catch (Exception e) + { + m_log.Error("[NHIBERNATE] issue saving asset", e); + } + } /// /// Adds an object into region storage @@ -125,7 +153,7 @@ namespace OpenSim.Data.NHibernate foreach (SceneObjectPart part in obj.Children.Values) { m_log.InfoFormat("Storing part {0}", part.UUID); - session.SaveOrUpdate(part); + SaveOrUpdate(part); } session.Flush(); } diff --git a/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml b/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml index 5b8b7f2..40d3864 100644 --- a/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml +++ b/OpenSim/Data/NHibernate/Resources/RegionStore.hbm.xml @@ -82,7 +82,26 @@ - + + + + + + + + + + + + + + + + + + + + diff --git a/OpenSim/Data/NHibernate/TextureUserType.cs b/OpenSim/Data/NHibernate/TextureUserType.cs index dac7c75..b688a16 100644 --- a/OpenSim/Data/NHibernate/TextureUserType.cs +++ b/OpenSim/Data/NHibernate/TextureUserType.cs @@ -49,8 +49,16 @@ namespace OpenSim.Data.NHibernate public object DeepCopy(object texture) { - byte[] bytes = ((LLObject.TextureEntry)texture).ToBytes(); - return new LLObject.TextureEntry(bytes, 0, bytes.Length); + if (texture == null) + { + // TODO: should parametrize this texture out + return new LLObject.TextureEntry(new LLUUID("89556747-24cb-43ed-920b-47caed15465f")); + } + else + { + byte[] bytes = ((LLObject.TextureEntry)texture).ToBytes(); + return new LLObject.TextureEntry(bytes, 0, bytes.Length); + } } public object Disassemble(object texture) -- cgit v1.1